这是一件非常容易的事,我觉得我应该知道更多 - 但我没有,也找不到多少。
问题是:浏览器知道网页的确切变化是什么?
直观地说,我会说F5刷新给定页面的缓存,并且该缓存仅用于历史导航并且具有到期日期 - 这使我认为浏览器永远不知道网页是否已更改,并且它如果缓存消失,只需重新加载页面 - 但我确信情况并非如此。
任何指示赞赏!
答案 0 :(得分:10)
答案 1 :(得分:6)
浏览器通常会通过随页面发送的HTTP标头获取此信息。
例如,Last-Modified标头告诉浏览器页面的年龄。浏览器可以向页面发送简单的HEAD请求以获取最后修改的值。如果它比浏览器在缓存中的更新,那么浏览器可以重新加载它。
还有一堆与缓存相关的其他标头(如Cache-Control)。查看: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
答案 2 :(得分:2)
Web浏览器发送HTTP请求,并接收HTTP响应。然后,他们显示HTTP响应的内容。通常,HTTP响应将包含HTML。许多HTML元素可能需要新的请求来接收页面的各个部分。例如,每个图像通常是另一个HTTP请求。
有HTTP标头指示页面是否是新的。例如,上次修改日期。 Web浏览器通常使用条件GET
(条件头字段)或HEAD
请求来检测更改。 HEAD
请求仅接收标头,而不是请求的实际资源。
如果没有更改,条件GET
HTTP请求将返回304 Not Modified
状态。
然后可以根据以下内容更改页面:
答案 3 :(得分:2)
你正在走上正轨,正如乔纳森所说,没有比阅读文档更好的了。但是,如果您只想了解更多信息:
有HTTP响应标头可让服务器设置页面的可缓存性,该页面属于您的到期日期系统。但是,另一个重要的构造是HTTP HEAD请求,它基本上检索给定页面的MIME类型和内容长度(如果可用)。浏览器可以使用HEAD请求来验证缓存中的内容......
关于这个主题肯定有更多的信息,所以我建议阅读文档...