Я создаю сайт с django, который позволяет пользователям перемещать контент между кучей фотоуслуг. Как вы можете себе представить, приложение делает много хитов API.
например: пользователь подключает Picasa, Flickr, Photobucket и Facebook к своей учетной записи. Теперь нам нужно вытащить контент из 4 различных API-интерфейсов, чтобы поддерживать актуальность данных пользователей.
сейчас у меня есть функция, которая обновляет каждый API, и я запускаю их все одновременно с помощью потоков. (все API, которые не включены, возвращают false во второй строке, нет, это не слишком много, чтобы запустить их все).
Вот мой вопрос:
Какова лучшая стратегия для поддержания контента в актуальном состоянии с использованием этих API?
У меня есть две идеи, которые могут сработать:
Периодически обновляйте API (например, задание cron), и все, что у нас есть в данный момент, - это то, что получает пользователь.
преимущества:
- Это легко и просто реализовать.
- У нас всегда будут довольно хорошие данные, когда пользователь загружает свою первую страницу.
подводные камни:
- мы должны делать хиты API все время для пользователей, которые не активны, что тратит много пропускной способности
- Это, вероятно, сделает провайдеров API несчастными
Запускать обновления, когда пользователь входит в систему (при загрузке страницы)
льготы :
- мы экономим кучу пропускной способности и меньше рискуем разозлить провайдеров API
- не требует НЕКОТОРОГО количества ресурсов на наших серверах
подводные камни:
- мы либо должны выполнить обновление асинхронно (и не будем
что-нибудь при первом входе в систему) или ...
- загрузка первой страницы займет очень много времени, потому что мы
получение всех данных API (таким образом я измерил 26 секунд)
edit : дизайн очень легкий, дизайн имеет только два изображения, внешний файл css и два внешних файла javascript.
Кроме того, число 26 секунд поступает от сетевого монитора Firebug, работающего на машине, которая была в той же локальной сети, что и сервер