【发布时间】:2014-02-18 19:25:15
【问题描述】:
远程网页更新 - 有时较慢,十分钟左右一次。有时更频繁,比如每分钟或更频繁。我想存储该页面上的一段数据,并在它发生变化时对其进行更新(不一定要获取 每个 更改,但不要落后于“当前”太远,并保持更新运行 24 /7)。
每分钟下载整个远程页面以检查它是否与以前的版本不同,这绝对是粗鲁的一面。
每分钟 ping 一次远程网站的标头不会太多。
如果有任何提示何时重新检查更新,或者仅在内容更改后让服务器回复内容,那将是理想的。
我应该如何在保持最新状态的同时尽量减少对远程服务器的不必要流量?
“watcher/updater”是用 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
【问题讨论】:
-
使用 HTTP
HEAD请求并检查Last-Modified标头... -
如果远程站点提供了一个“过期”标头,该标头可能会告诉您该站点何时需要刷新数据。
-
取决于远程服务器设置和理解的缓存头。你能显示返回的标头的转储吗?
标签: php http http-headers