Как кэшировать данные RSS-канала для отображения на сайте? - PullRequest
0 голосов
/ 28 января 2011

Я занимаюсь разработкой веб-сайта, на котором будет отображаться самый последний элемент из RSS-канала.Однако каждый раз, когда пользователь заходит на сайт, я бы хотел, чтобы на странице отображались кэшированные данные.Это сделает отображение страницы намного быстрее, так как я планирую кэшировать более 50 RSS-каналов.

У меня вопрос: как мне кэшировать RSS-канал, но убедитесь, что он обновляется в фоновом режиме каждые 4 часа или около того?

Ответы [ 2 ]

4 голосов
/ 28 января 2011

Создайте папку кэша для хранения всех RSS-каналов.

Когда страница загружена, проверьте, существует ли файл, не загружается ли он, и обработайте его.

Если файл существует и результат filemtime($cached_file) + (60 * 60 * 4) больше time(), это означает, что с момента получения RSS-канала прошло менее 4 часов.Показать страницу как обычно.Если это не так, заново загрузите файл и отобразите его.

Существует множество учебных пособий по синтаксическому анализу RSS-каналов в PHP.Я предпочитаю использовать расширение PHP DOM, но есть много разных способов сделать это.

1 голос
/ 27 апреля 2012

Я создал простой класс PHP для решения этой проблемы. Так как я имею дело с различными источниками, он может обрабатывать все, что вы на него бросаете (xml, json и т. Д.). Вы даете ему локальное имя файла (для целей хранения), внешний канал и время истечения. Он начинается с проверки локального файла. Если он существует и срок его действия не истек, он возвращает содержимое. Если срок его действия истек, он пытается получить удаленный файл. Если с удаленным файлом возникнет проблема, он вернется к кешированному файлу.

Сообщение в блоге здесь: http://weedygarden.net/2012/04/simple-feed-caching-with-php/

Код здесь: https://github.com/erunyon/FeedCache

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