Я создаю приложение для Твиттера, которое требует частой проверки пользовательских данных, но я сталкиваюсь с проблемой с кэшем, который странным образом находится на стороне Твиттера, а не на моем.
Попробуйте следующий пользователь:
users/show
в XML: http://twitter.com/users/show.xml?screen_name=technolocus
users/show
в формате JSON: http://twitter.com/users/show.json?screen_name=technolocus
обычная страница: http://twitter.com/technolocus
Все эти методы доступа к данным должны возвращать одинаковые значения, верно? Проверьте statuses_count
для каждого из них.
XML: 12548
JSON: 12513
нормальный: 12498
Нормальный метод (т. Е. Просто посещение профиля непрограммически) дает наиболее правильное значение 12498. Если я публикую или удаляю твиты в этом аккаунте, он мгновенно обновляется на странице профиля, но методы XML и JSON по-прежнему возвращать кэшированные данные.
На данный момент значения методов XML и JSON имеют возраст от 12 до 18 часов соответственно.
Сначала я попытался получить доступ к этим методам с моего сайта (размещенного на Dreamhost). Я думал, что Dreamhost кеширует ответы. Затем я попытался получить доступ к API прямо из моего браузера. После этого я сделал cURL
из командной строки с моей машины. Это был не сон Я думал, что это, вероятно, мой провайдер (я думаю, что они используют NetApp или что-то подобное). Затем я попросил друга в другом уголке Индии попробовать. Он получает те же самые кешированные ответы, что и я.
Так что это не кэш Dreamhost; это не мой провайдер или кеш моей страны. Вывод только один - Twitter кеширует ответы.
Как на небесах я могу обойти это?!?
Забыл упомянуть об этом: скрипт на сервере написан на PHP и использует cURL для извлечения данных XML и JSON из Twitter, в то время как локальные тесты только используют браузер. Оба имеют одинаковый результат!