客户端JavaScript缓存是如何工作的?

3
我想知道浏览器如何确定是从服务器获取脚本还是从缓存中获取,当我在开发时,我从未清除缓存以查看更改。但是,有些人经常遇到浏览器缓存脚本而不获取更新版本的问题。我知道可以附加查询字符串到文件路径以强制从服务器获取,但在这个问题中,我更感兴趣的是了解问题背后的原理。为什么缓存只有有时会干扰,为什么它不会对每个人产生相同的影响?
此外,这与不同的浏览器有什么区别? IE,Firefox,Chrome等等...
谢谢

缓存无处不在,服务器端和客户端都有。就这个问题而言,我假设你只是在询问关于客户端的缓存。我建议下载Fiddler和/或Wireshark来查看从服务器返回的原始响应。缓存指令以HTTP头的形式存在,缓存行为取决于请求和响应中的头部信息。 - Brad
作为开发人员,您很可能会打开浏览器的开发工具,在某些情况下,这意味着您的浏览器没有缓存,这可能是为什么您似乎没有问题,而其他人却有问题的原因。 - aet
我认为你的问题太过宽泛了,因为有很多不同的缓存技术适用于浏览器... 是的,这可能因为技术支持、实现错误和配置规则而在不同浏览器上有所不同。 - Bergi
正如我在问题中提到的,我知道使用查询字符串来强制从服务器获取文件。我想要了解的是,浏览器如何确定是否要从服务器获取文件?它会检查缓存文件是否过期并重新获取吗?... - user1960364
是的 - Bergi
1个回答

0

像其他人所说的,这是一个相当广泛的问题,我认为它真的取决于浏览器。通常情况下,浏览器会缓存诸如图像、CSS 和 JS 文件等内容,以便在再次访问网站时减少页面加载时间。

如果您担心您的受众能否查看您的新内容或功能,则一种“简单”的方法是对您的 JS 和 CSS 文件进行版本控制。可以通过执行以下操作来完成此操作:

script type="text/javascript" src="someplace/main.js?ver=1.5" >

请注意 js 扩展名后面的问号。这只是告诉浏览器有更多数据要处理。如果它无法识别字符串,则会尝试重新下载文件,从而更新客户端缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接