首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >它是文件名还是浏览器缓存中用作关键字的整个URL?

它是文件名还是浏览器缓存中用作关键字的整个URL?
EN

Stack Overflow用户
提问于 2008-09-17 14:44:07
回答 10查看 16.4K关注 0票数 27

通常希望浏览器缓存资源- JavaScript、CSS、图像等,直到有新版本可用,然后确保浏览器获取并缓存新版本。

一种解决方案是在资源的文件名中嵌入一个版本号,但是将以这种方式管理的资源放在一个带有修订号的目录中会做同样的事情吗?文件的整个URL是用作浏览器缓存中的关键字,还是仅仅是文件名本身和一些元数据?

如果我的代码从获取/r20/example.js更改为/r21/example.js,我可以确定缓存了example.js的修订版20,但现在已经取回了修订版21,现在它被缓存了吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 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服务器上进行简单的测试来验证。)

(如果我有这样做的声誉,我会对目前接受的答案发表评论。:-)

票数 51
EN

Stack Overflow用户

发布于 2017-01-18 17:55:18

浏览器缓存键是请求方法和资源URI的组合。URI由方案、权限、路径、查询和片段组成。

相关摘录自HTTP 1.1 specification

主缓存键由请求方法和目标URI组成。然而,由于目前常用的HTTP缓存通常仅限于缓存要获取的响应,因此许多缓存只是拒绝其他方法,而只使用URI作为主缓存键。

相关摘录自URI specification

通用URI语法由称为方案、授权、路径、查询和片段的组件的分层序列组成。URI = scheme ":“hier-part "?”query hier-part = "//“权限路径-abempty

代码语言:javascript
复制
              / path-absolute
              / path-rootless
              / path-empty
票数 6
EN

Stack Overflow用户

发布于 2008-09-17 14:46:24

我99.99999%确定它是用于在浏览器中缓存资源的整个url,所以您的url方案应该工作得很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/83990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档