通常希望浏览器缓存资源- JavaScript、CSS、图像等,直到有新版本可用,然后确保浏览器获取并缓存新版本。
一种解决方案是在资源的文件名中嵌入一个版本号,但是将以这种方式管理的资源放在一个带有修订号的目录中会做同样的事情吗?文件的整个URL是用作浏览器缓存中的关键字,还是仅仅是文件名本身和一些元数据?
如果我的代码从获取/r20/example.js更改为/r21/example.js,我可以确定缓存了example.js的修订版20,但现在已经取回了修订版21,现在它被缓存了吗?
发布于 2008-09-17 17:02:06
是的,URL的任何部分中的任何更改( HTTP和HTTPS协议更改除外)都会被浏览器(和任何中间代理)解释为不同的资源,因此将在浏览器缓存中产生一个单独的实体。
更新:
在this ThinkVitamin article中,Opera和Safari/Webkit浏览器不使用?query=strings缓存URL的说法是false。
向URL添加版本号参数是一种完全可以接受的缓存破坏方式。
可能让ThinkVitamin文章的作者感到困惑的是,在Safari和Opera中按下地址/地址栏中的Enter会对包含查询字符串的URL产生不同的行为。
然而,(这是最重要的部分!)在缓存网页中嵌入/链接的图像、样式表和脚本时,Opera和Safari 的行为就像IE和Firefox一样--不管它们是否有"?“其URL中的字符。(这可以通过在正常的Apache服务器上进行简单的测试来验证。)
(如果我有这样做的声誉,我会对目前接受的答案发表评论。:-)
发布于 2017-01-18 17:55:18
浏览器缓存键是请求方法和资源URI的组合。URI由方案、权限、路径、查询和片段组成。
主缓存键由请求方法和目标URI组成。然而,由于目前常用的HTTP缓存通常仅限于缓存要获取的响应,因此许多缓存只是拒绝其他方法,而只使用URI作为主缓存键。
相关摘录自URI specification
通用URI语法由称为方案、授权、路径、查询和片段的组件的分层序列组成。URI = scheme ":“hier-part "?”query hier-part = "//“权限路径-abempty
/ path-absolute
/ path-rootless
/ path-empty发布于 2008-09-17 14:46:24
我99.99999%确定它是用于在浏览器中缓存资源的整个url,所以您的url方案应该工作得很好。
https://stackoverflow.com/questions/83990
复制相似问题