摘要:做搜索引擎的时候,网络爬虫(WebSpider)对于有更新的页面才会重新下载。如何判断网页是否更
新就需要采取一定的方法,本文简要的探讨了判断网页跟新的2个策略。
关键字:网页跟新,LastModified,ETag,MD5数字签名
编写搜索引擎程序的时候,我们需要判断一个网页是否已经更新。有更新的页面就得重新下载再次
建立索引,而没有更新的页面就没必要重新索引,从而节约系统资源。
1、使用HTTP协议头
通产情况下,下载网页我们使用HTTP协议,向服务器发送HEAD请求,可以得到页面的最后修改时
间LastModifed,或者标签ETag。将这两个变量和上次下载记录的值的比较就可以知道一个网页是否跟新。
这个策略对于静态网页是有效的。但是对于绝大多数动态网页如ASP,JSP来说,LastModifed就是服务器
发送Response的时间,并非网页的最后跟新时间,而Etag通常为空值。所以对于动态网页使用
LastModifed和Etag来判断是不合适的。
2、使用MD5数字签名
每次下载网页时,把服务器返回的数据流ResponseStream先放在内存缓冲区,然后对
ResponseStream生成MD5数字签名S1,下次下载同样生成签名S2,比较S2和S1,如果相同,则页面没有
跟新,否则网页就有跟新。需要说明的是用md5算法对文本刘签名的速度是极快的,M级的数据可以在毫秒
内完成。这种策略虽然也把页面数据从服务器传输到了本地机,但是省掉了页面的I/O操作,对系统性能的
提升是很有帮助的。