网站监控网页内容监测(动态网页使用LastModifed和Etag来判断是不合适的?)

优采云 发布时间: 2021-11-25 21:08

  网站监控网页内容监测(动态网页使用LastModifed和Etag来判断是不合适的?)

  第二次请求页面时,如果页面没有更新,会反馈一个304码,搜索引擎也会用这个304http状态码来判断页面是否更新。

  首先,必须第一次抓取网页。假设是A.html,这个网页存储在磁盘上,并有相应的修改时间(即更新文件的时间)。

  那么在第二次爬取的时候,如果发现本地已经存在这个网页,比如A.html,此时只需要向服务器发送If-Modified-Since请求,带上A.html的修改时间. .

  如果A.html在此期间更新,即A.html过期,服务器会出现HTTP状态码200并发送新文件。这时候只要更新A.html即可。如果这段时间内A.html的内容没有变化,服务器会返回HTTP状态码304(不返回文件内容),此时不需要更新文件。

  2、Last-Modified 文件最后修改时间

  这是 http 头信息中的一个属性。主要记录页面的最后修改时间。我们经常发现一些权重很高的网站没有及时更新页面内容,但是快照仍然可以每天更新,这其中就包括Last-Modified的作用。一般生产的情况下,我们使用HTTP协议下载网页并向服务器发送HEAD请求,可以得到页面的最后修改时间LastModifed,或者标签ETag。通过将这两个变量与上次下载记录的值进行比较,就可以知道一个网页是否是最新的。此策略对静态网页有效。对于ASP、JSP等大多数动态网页,LastModifed是服务器发送Response的时间,而不是网页最后一次更新的时间,Etag通常为空值。因此,不宜使用LastModifed和Etag来判断动态网页是否更新。因此,Last-Modified 只是蜘蛛判断页面是否更新的参考值,而不是一个条件。

  3、比较文件大小

  搜索引擎也会取出上一个页面文件,与当前文件进行比较。不过由于网站大多是替换更新,往往很难通过比较文件大小来说明问题,所以常与页面链接更改结合使用。

  4、使用MD5数字签名

  每次下载网页时,先将服务器返回的ResponseStream放入内存缓冲区,然后

  ResponseStream生成MD5数字签名S1,下次下载也生成签名S2,比较S2和S1,如果相同则页面不

  保持最新,否则网页将保持最新。需要注意的是,md5算法对文本刘的签名速度极快,M级的数据可以达到毫秒级。

  内完成。虽然这种策略也将页面数据从服务器传输到本地机器,但它节省了页面I/O操作,影响了系统性能。

  推广很有帮助。

  ---------------------

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线