В настоящее время я работаю над приложением, которое синхронизирует одну конкретную папку в Google Drive пользователей. Мне нужно найти, когда какие-либо файлы / папки в этой конкретной папке изменились. Сам процесс синхронизации прост, но я не хочу делать полную синхронизацию каждые несколько секунд. Я осуждаю один из этих методов:

1) Контролируйте ленту изменений и ищите любые изменения файла Этот метод прост, но он вызовет синхронизацию, если ЛЮБОЙ файл на диске изменится.

2) Часто запрашивать все файлы на всем диске, например. service.files (). list (). execute () и ищите изменения в определенном дереве. Это подход грубой силы. Это будет слишком медленно, если у пользователя есть тысячи файлов на диске.

3) Начните с определенной папки и двигайтесь вниз по дереву папок в поисках изменений. Этот метод будет быстрым, если в определенном дереве всего несколько каталогов, но все равно приведет к многочисленным запросам API.

Есть ли более эффективные способы узнать, изменилась ли конкретная папка и ее содержимое? Могу ли я применить оптимизацию для метода 1,2 или 3.

3
Max Ferguson 25 Янв 2013 в 02:06

2 ответа

Лучший ответ

Как вы правильно сказали, вам нужно будет сохранить (или проработать) иерархию файлов для измененного файла, чтобы узнать, изменился ли файл в дереве папок.

Из канала изменений невозможно узнать, был ли изменен глубоко вложенный файл в папке. Сожалею.

1
Ali Afshar 28 Янв 2013 в 06:18

Есть несколько хитростей, которые могут помочь.

Во-первых, если ваше приложение использует область действия drive.file, то оно будет видеть только свои собственные файлы. В зависимости от конкретной ситуации это может соответствовать иерархии папок.

Во-вторых, файлы могут иметь несколько родителей. Так что при создании файла в папке-top / folder-1 / folder-1a / folder-1ai. Вы можете объявить как folder-1ai , так и folder-top родителями. Тогда вам просто нужно проверить папку-top.

0
pinoyyid 19 Дек 2013 в 15:09