简单的客户端技巧
一般情况下,缓存是有益的...因此,根据您是在开发网站时为自己解决问题,还是在生产环境中控制高速缓存的不同情况,有几种技术可供选择。
普通访问者来到您的网站时,他们不会像您在开发网站时那样有相同的体验。由于普通访问者可能每个月只访问几次该网站(除非您是Google或hi5 Networks),所以他们很可能没有缓存您的文件,这已经足够了。
如果您想要强制浏览器加载新版本,您可以在请求中添加查询字符串,并在进行重大更改时增加版本号:
<script src="/myJavascript.js?version=4"></script>
这将确保每个人都获得新文件。它的工作原理是因为浏览器查看文件的URL来确定它是否有副本在缓存中。如果您的服务器没有设置任何查询字符串操作,它将被忽略,但对于浏览器而言,文件名看起来像是一个新的文件。
另一方面,如果您正在开发网站,您不希望每次保存开发版本时都更改版本号。那将很繁琐。
因此,在您开发网站时,一个好的技巧是自动生成查询字符串参数:
<!
<script>document.write('<script src="/myJavascript.js?dev=' + Math.floor(Math.random() * 100) + '"\><\/script>');</script>
添加查询字符串到请求是一种很好的资源版本控制方式,但对于简单网站可能并不必要。请记住,缓存是一件好事。
值得注意的是,浏览器并不一定会很吝啬地保持文件在缓存中。浏览器有这方面的策略,并且通常遵守HTTP规范中制定的规则。当浏览器向服务器发出请求时,响应的一部分是一个Expires头...一个日期,告诉浏览器应该将其保存多长时间。下次浏览器遇到相同文件的请求时,它会看到自己的缓存中有一个副本,并查看Expires日期来决定是否使用它。
所以信不信由你,实际上是你的服务器使那个浏览器缓存如此持久。你可以调整服务器设置并更改Expires头,但我上面写的小技巧可能是一个更简单的方法。由于缓存是好的,你通常希望将日期设置得很远("远期过期头"),并使用上面描述的技术来强制更改。
如果你对HTTP或这些请求的制作方式更感兴趣,那么推荐一本好书是Steve Souders的《高性能网站》。它是这个领域非常好的入门读物。
ExpiresActive On ExpiresDefault "modification"
。 - Frank Conijn - Support Ukraineiframe.contentWindow.location.reload(true)
来有效地执行相同的操作。请参见 https://dev59.com/6XNA5IYBdhLWcg3wIqPr#22429796 的方法(4)-那是关于图片的,但同样适用。 - Doin