Chrome为什么会快些?

Chrome为什么会快些?

常见的理由是有一个强大的V8 javascript引擎。而最近在研究Ajax时,无意发现Chrome和IE在处理HTTP基础协议时,实际上也存在很大的差异,这些差异可以导致即使处理HTML/JS文件时,两者的处理速度也会很不一样。

测试时采用Apache 2.2.20(Ubuntu)作HTTP服务器。

在Apache中设置Cache-Control,指定no-cache,我们来看看Chrome和IE会怎么处理。

Chrome发送GET请求,包含If-None-Match以及If-Modified-Since等重要参数。Apache比较对应的ETag以及Last-Modified,发现文件没有改变,因此仅返回”304 Not Modified”。可见,Chrome直接使用了自己Cache的内容,并没有理会no-cache指示。

而IE呢?IE理会了no-cache指示,因此在GET请求中,老老实实地抹掉了If-None-Match以及If-Modified-Since参数,Apache返回200OK并重新携带请求的内容,IE重新处理返回的内容。

从对no-cache参数的字面理解看,IE的处理是正确的,而Chrome显得比较奸诈。

对于某些情况,我们确实需要强制浏览器端重新获取内容(尤其是对javascript文件),此时在Apache中不仅要设置no-cache,还必须设置no-store。

同时设置no-cache和no-store后,IE/Chrome都会向Apache重新请求内容,并刷新本地内容。

Comments are closed.