выборочное обновление узла для кэшированного канала XML и / или программы чтения каналов - PullRequest
0 голосов
/ 13 августа 2010

За rsscache они предлагают механизм, который кэширует ленту вашего сайта.Они утверждают, что если новый узел будет добавлен в ваш фид, вместо очистки и повторного заполнения всего кэша (для текущего пользователя, они, вероятно, это делают для новых пользователей), они отправляют новый узел только читателю новостей текущего пользователя и читателю.добавляет его в другие узлы, обновляет без полного обновления, сохраняя пропускную способность.(см. шаг 6)

Это правильно, я могу представить, что в кэш добавлен узел, а не очищен и обновлен, но я не понимаю, как этот сценарий может работать в фидридере посетителя.

Если это так, как можно (выборочное обновление для кэша и / или читателя) добиться с помощью php?

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

error:node not found

Таким образом, когда случайные узлы в фиде mashup (lifestream), происходящие из определенного сервиса, например, twitter, исчезают из-за того, что сервид отключен, узлы не заменяются ошибкой offline, но их предыдущее состояние остается?

Ответы [ 2 ]

0 голосов
/ 13 августа 2010

Вот один подход, который может сработать:

Храните локальный кеш каналов и делайте условные GET (используя заголовок If-Modified-Since) на основе даты этой кэшированной версии (что приводит к уменьшению пропускной способности для веб-мастера, если его сервер поддерживает условные GET). Как только у вас есть канал, проверьте каждый элемент в нем, чтобы увидеть, существует ли он уже в вашей БД или нет. Если он уже существует, пропустите его, если он не будет добавлен, включая отметку времени, чтобы отразить его при добавлении, и, возможно, вы также захотите удалить «мертвые» элементы для канала.

Теперь вам нужно отслеживать последний раз, когда кто-то запрашивал конкретный канал на сервере. Если кто-то впервые запрашивает фид, просто верните все элементы, которые вы сохранили в БД для этого фида, и добавьте запись, содержащую пользователя (ip?), Фид и текущее время. Если он был там раньше для этого канала, то выберите все записи для этого канала, которые были добавлены после его предыдущего запроса (а затем обновите время last_query для этого конкретного пользователя и канал до текущего времени). А если нет новых товаров, просто верните пустой канал.

0 голосов
/ 13 августа 2010

Обычно фид-ридеры сохраняют все элементы, когда-либо включенные в фид. Или можно настроить максимальный возраст или количество сохраняемых элементов.

Rsscache.com, вероятно, хранит элементы фида и какие клиенты получили, какие элементы являются базой данных. С этой информацией можно динамически создавать фид только с элементами, которые еще не возвращены.

Поэтому, когда вы начинаете читать канал через rsscache.com, все элементы возвращаются, но в более поздних запросах только новые элементы.

...