请告诉我/glow.min.js?v=5是什么意思?即这里的文件版本控制是如何完成的。

最佳答案

这意味着从服务器的根目录获取glow.min.js,并尝试通过查询字符串来控制缓存。

除非服务器已设置为可以处理查询字符串,否则查询字符串不会执行任何操作,通常情况下,查询字符串不会执行任何操作,因此服务器只会丢弃查询字符串。有时这样做是为了控制缓存,从理论上讲,如果资源是通过HTTP 1.1交付的(因为未缓存带有查询字符串的HTTP 1.0资源),则如果查询字符串匹配,则允许浏览器重用资源,但是如果您将其更改为v=6,然后浏览器将重新获取资源(大概您已更改了基础文件)。

有比查询字符串更好的管理缓存的方法。 This article很好地说明了该代码在做什么以及以其他方式执行此代码的替代方法。本文中提出的一些选择要点:


通过使用具有较大值的Cache-Control: max-age标头,使高速缓存存储不经常更改的图像和页面。
通过指定适当的max-age或到期时间,使高速缓存识别出定期更新的页面。
如果资源(尤其是可下载文件)发生更改,请更改其名称。这样,您可以使它在将来过期,并且仍然保证提供正确的版本。链接到该页面的页面是唯一需要较短到期时间的页面。


但是,请阅读本文以获取更多见解。

最后一点,“如果资源改变了,改变它的名字”在您的情况下应该特别容易,因为我假设您引用的是BBC's Glow library,它已经具有可以在主URL中使用的版本(而不是在查询字符串)。

我将添加我自己的观点:


尽可能利用CDN。看到该库不在Google Ajax Libraries列表中,但似乎没有,我感到有些惊讶。您可以在Glow讨论组中查看该库是否托管在某个CDN上(毕竟Google并不是唯一的一个)。

09-25 22:29