我在一个php脚本获取远程rss (xml)文件的本地副本,我已经知道,我可以做到这一点,使用像这样的cron作业
但我认为我可以做到这一点到目前为止更容易使用php行,比较服务器时间与本地复制的文件的时间戳,当调用php取回脚本。如果时间超过一个阈值,比如1小时,我将简单地重新获取远程xml,否则,处理本地xml副本。
这种方法有什么缺点吗?
看一下RFC 2616 - HTTP缓存。
你甚至不需要下载文件并检查修改时间。
您可以使用HEAD
方法轻松发送请求。(不是POST
或GET
)然后检查一些HTTP响应头,如:
-
Etag
您可以为每个实体保存ETag并将其保存在服务器的某个地方。然后检查ETag是否已更改,发送
GET
请求以检索新文件。 -
Last-Modified
使用此字段要容易得多。比较您的最后一次更新时间与该字段的值
-
Expires
你可以计划在未来的这个时候发送请求。
每个字段的存在取决于web服务器的配置和他们制作RSS生成器的方式。但通常这些字段中有一个是存在的。
也有替代方式检查内容的长度通过检查Content-Length
字段与您的文件的长度存在于您的服务器上。