gpt4 book ai didi

php - 如何礼貌地询问远程网页是否改变了?

转载 作者:可可西里 更新时间:2023-11-01 16:28:30 32 4
gpt4 key购买 nike

远程网页更新 - 有时速度较慢,大约每十分钟一次。有时更频繁,比如每分钟或更频繁。该页面上有一段数据我想存储,只要它发生变化就更新它(不一定要捕获每个变化但不要落后于“当前”太远,并保持更新运行 24/7).

每分钟下载整个远程页面来检查它是否与以前的版本不同,这绝对是粗鲁的一面。

每分钟 ping 一次远程网站的 header 并不过分。

如果有任何提示何时重新检查更新,或者让服务器仅在内容更改后才回复内容,那将是理想的。

我应该如何在保持最新状态的同时最大限度地减少不需要的远程服务器流量?

“观察者/更新者”是用 PHP 编写的,现在每分钟使用 simplexml_load_file() 获取页面以获取远程 URL确定文件后的连接有所不同,仅半秒后重新连接实际内容,仅继续内容请求)可能是首选。

编辑:每个请求,样本 header 。

    > 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

最佳答案

ETag: "66509a4967de2c5984aa3475188012df"

这是一个非常有前途的 header 。如果确实对应了页面本身的变化,可以查询设置这个请求头的服务器:

If-None-Match: "<the last received etag value>"

如果内容未被修改,服务器应以 304 Not Modified 状态和无正文响应。参见 http://en.wikipedia.org/wiki/HTTP_ETag .它似乎也在运行一个缓存前端,因此您可能不会太用力地使用它。

关于php - 如何礼貌地询问远程网页是否改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863437/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com