Как мне обойти проблему с кэшированием в Twitter API? - PullRequest
0 голосов
/ 11 июля 2009

Я создаю приложение для Твиттера, которое требует частой проверки пользовательских данных, но я сталкиваюсь с проблемой с кэшем, который странным образом находится на стороне Твиттера, а не на моем.

Попробуйте следующий пользователь:

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, в то время как локальные тесты только используют браузер. Оба имеют одинаковый результат!

Ответы [ 3 ]

0 голосов
/ 11 июля 2009

Если то, что вы говорите, является точным, и, вероятно, это, как правило, вы не можете обойти это. Твиттер хотел бы кэшировать свои ответы, так как их копирование обходится дорого.

Когда вы используете API-интерфейсы Twitter, вы ограничиваетесь его соглашениями, даже если это включает кеширование.

Лучше всего написать в Твиттере @twitterapi, чтобы они ответили, почему эти два представления расходятся.

0 голосов
/ 21 февраля 2011

Добавьте? Blah = xxxx ко всем URL-адресам.

Я ничего не развиваю против твиттера и иногда вручную "следую" за тремя твитами, переходя к ним в моем браузере. Они всегда отстают на полдня. Я добавляю? Asdsadsadsad в URL (каждый раз что-то другое), и он всегда обновляется. Я не знаю, что делает Твиттер здесь и пришел сюда во время поиска проблемы. Но я думаю, что этот трюк с добавлением случайного значения к URL через GET, вероятно, будет работать и для ваших запросов API.

0 голосов
/ 11 июля 2009

Во-первых, я думаю, вы должны сообщить об этой ошибке в Twitter. Я вижу то же несоответствие, что и вы, и неважно, что это похоже на ошибку. Даже если они кешируют, я ожидаю, что на их стороне будет храниться абстрактная форма, которая затем будет отображаться в HTML, JSON и XML. Интересно, на самом деле происходит то, что эти запросы выполняют похожие, но разные запросы.

Вы уверены, что значения "старые"? Например, действительно ли вы недавно удалили около 50 обновлений (поскольку вы говорите, что HTML-версия является самой новой, но показывает меньшее количество, чем две другие)? Если вы создаете другое обновление, вы видите приращение числа HTML, в то время как другие числа остаются прежними, или они все увеличиваются одновременно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...