Javascript 缓存:myscript-1125.js vs myscript.js?1125

Javascript 缓存:myscript-1125.js vs myscript.js?1125,javascript,css,http,caching,Javascript,Css,Http,Caching,把脚本版本放在哪里有什么区别吗?查询参数或路径。赞成,反对?是的,有区别 您将希望将其作为文件名的一部分,或者某些浏览器将而不是缓存它 发件人: 根据HTTP缓存规范的规定,用户代理永远不应该缓存URL 使用查询字符串。Internet Explorer和Firefox忽略了这一点,而Opera和Safari则没有 –为了确保所有用户代理都可以缓存您的资源,我们需要保留查询字符串 他们的网址 发件人: 雅各布·霍夫曼·安德鲁斯(Jacob Hoffman Andrews)提到,Squid是一种流

把脚本版本放在哪里有什么区别吗?查询参数或路径。赞成,反对?

是的,有区别

您将希望将其作为文件名的一部分,或者某些浏览器将而不是缓存它

发件人:

根据HTTP缓存规范的规定,用户代理永远不应该缓存URL 使用查询字符串。Internet Explorer和Firefox忽略了这一点,而Opera和Safari则没有 –为了确保所有用户代理都可以缓存您的资源,我们需要保留查询字符串 他们的网址

发件人:

雅各布·霍夫曼·安德鲁斯(Jacob Hoffman Andrews)提到,Squid是一种流行的代理,它不使用查询字符串缓存资源。 当代理缓存后面的多个用户请求同一个文件时,这会影响性能 –每个人都必须向源服务器发送请求,而不是使用缓存版本

(请注意,Squid中的此默认行为具有)

最后,还有一个很好的小服务,它可以让你在互联网上“ping”一个页面,并验证文件(及其使用的资源)的“可缓存性”

-检查

您会注意到StackOverflow提供的CSS和JS文件在查询字符串中进行了版本控制,因此服务报告:

此对象将在1周内保持新鲜。 它可以通过上次修改进行验证。 因为它在URL中包含一个查询(“?”),所以许多缓存不会保留此对象


该文档非常具有误导性——作者没有提到的是(来自RFC2616)是“……除非服务器提供明确的过期时间”。您确实应该指定js文件在默认情况下是可缓存的。@symcbean-同意也应该设置缓存头。这只是一篇讨论这个问题的文章,但从我读过的所有深入文章来看,必须更改文件名才能在所有浏览器中实现所需的缓存行为。