Удаленная веб-страница обновляется - иногда медленнее, раз в десять минут или около того. Иногда чаще, как каждую минуту или чаще. На этой странице я хочу сохранить данные, обновляя их каждый раз, когда они меняются (не обязательно захватывать каждый раз, но не слишком сильно отстает от «текущего» и не задерживает обновление 24/7).Как вежливо спросить удаленную веб-страницу, если она изменилась?
Скачивая всю удаленную страницу каждую минуту, чтобы проверить, отличается ли она от предыдущей версии, определенно на грубой стороне.
Пилинг удалённого веб-сайта для заголовков один раз в минуту не будет чрезмерным.
Если есть какие-либо намеки на повторную проверку обновлений или ответьте сервером контент только после изменения содержимого, это будет идеально.
Как я могу минимизировать нежелательный трафик на удаленном сервере, сохраняя при этом актуальность?
«Наблюдатель/обновление» написан на PHP, извлекая страницу с помощью simplexml_load_file()
, чтобы получить удаленный URL-адрес каждую минуту, так что что-то хорошее с этим (например, не отбрасывает соединение при определении файла, отличается только для повторного подключения для фактического контента через полсекунды, просто продолжит запрос на контент), вероятно, будет предпочтительным.
Редактировать: по запросу, образцы заголовков.
> HEAD xxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1
> User-Agent: curl/7.27.0
> Host: xxxxxxxxxxxxxx
> Accept: */*
>
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1/.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Server: nginx
< Date: Tue, 18 Feb 2014 19:35:04 GMT
< Content-Type: application/rss+xml; charset=utf-8
< Content-Length: 9865
< Connection: keep-alive
< Status: 200 OK
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-UA-Compatible: chrome=1
< ETag: "66509a4967de2c5984aa3475188012df"
< Cache-Control: max-age=0, private, must-revalidate
< X-Request-Id: 351a829a-641b-4e9e-a7ed-80ea32dcb071
< X-Runtime: 0.068888
< X-Powered-By: Phusion Passenger
< X-Frame-Options: SAMEORIGIN
< Accept-Ranges: bytes
< X-Varnish: 688811779
< Age: 0
< Via: 1.1 varnish
< X-Cache: MISS
используйте запрос '' HEAD'' и изучите заголовок 'Last-Modified' ... –
Если удаленный сайт поставляет заголовок« Expires », который может сообщить вам, когда сайт ожидает обновления данных. –
Зависит от того, какие кеширующие заголовки задают и понимают удаленный сервер. Можете ли вы показать дамп возвращенных заголовков? – deceze