-
三 stackoverflow.com/questions/118884/… – 低估 评论 2012年1月23日9:50 -
1 我已经尝试了下面所有的“答案”,实际上 黑客 。它们都无法从缓存中删除确切的图像。 难怪这个问题 666人喜欢 (2022-05-28). – 显然,浏览器功能仍然缺失。– 服务器端无缓存标头似乎是唯一的方法。 – 阿凡达 评论 2022年5月28日11:07 -
1 有人试过吗 这 ? – S.Dre公司 评论 2022年5月31日12:21 -
我认为可以使用 电子标签 标头,用于在文件内容发生更改时更新缓存。 – 安德森·格林 评论 2023年5月23日20:41
30个答案
<script type=“text/javascript”src=“myfile.js?1500”></script>
此时,我假设没有比find-replace更好的方法来增加所有脚本标记中的这些“版本号”?
<script type=“text/javascript”src=“myfile.js?$$REVISION$$”></script>
-
6 -
5 -
8 -
56 意识方面:这被认为是一次黑客攻击。 此方法诱使浏览器认为正在指定一个新文件,因为它只查看完整的文件名,而不解释它。 foo.js? 1 与名称不同 foo.js? 2 ,因此浏览器会认为它们是两个不同的文件。 一个缺点是这两个文件将同时存在于用户的缓存中,占用了不必要的空间。 – 李·怀特 评论 2014年9月18日13:22 -
19
Cache-Control:max-age=86400,必须重新验证
缓存控制:无缓存,必须重新验证
-
5 -
10 -
4 -
2 对于开发Web应用程序来说,这可能是一个很好的解决方案。 对于一个生产站点,如果您不想让缓存永远失效,那么这不是一个好的解决方案,除非您 知道 每个目标客户端浏览器都已访问该站点。 它让我想到一个潜在的web服务器功能:根据配置的部署日期调整max-age参数。 那太棒了。 – 克劳德·布里森 评论 2017年3月15日13:48 -
Chrome需要这些设置才能正确缓存。 如果没有它们,Chrome将永远缓存一个文件。 Mozilla使用了更合理的默认值。 更多信息请访问: agiletribe.wordpress.com/2018/01/29/caching-for-chrome公司 – 安捷乐专业 评论 2018年1月30日23:01
<script type='text/javascript'src='path/to/file/myllibrary.js? 文件服务器=<= 文件大小(“path/to/file/mylibrary.js”)?>“></ 脚本>
-
5 -
5 -
7 -
2 -
4
此用法已被弃用: https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache
缓存MANIFEST #2014年8月14日 /霉菌.js 网络: *
<script src=“/Scripts/pages/common.js”type=“text/javascript”></script>
<script src=“/Scripts/pages/common.js?ver<%=DateTime.Now.Ticks.ToString()%>”type=“text/javascript”></script>
-
36 这与客户端的所有缓存机制背道而驰。 虚拟参数应该替换为类似“{主要版本}”的内容_ {次要版本}_ {内部编号}_ {Revision},对于每个版本来说都是唯一的。 – 托希德 评论 2014年11月10日16:58 -
18 虽然在开发环境中这可能是一个很好的解决方案,但它不适合生产。 这将完全禁用缓存 每次加载页面时 用于文件。 想象一下,每天用一个50Kb文件加载10k页,它代表每天500Mb的Javascript文件。 评论 2016年6月6日12:16 -
-
三 -
2 确保每天加载一次新副本的一种可能方法是使用'<script src=“/Scripts/pages/common.js?ver<%=DateTime.Now.ToString(“yyyyMMdd”)%>”type=“text/javascript”></script>'。 所以它在一天开始时加载一次,然后缓存。 – 罗布·萨德勒 评论 2017年9月13日15:17
<script type=“text/javascript”src=“脚本/exampleScript<%=Global.JsPostfix%>”/> <link rel=“stylesheet”type=“text/css”href=“css/exampleCss<%=Global.CssPostfix%>”/>
protected void Application_Start(对象发送方,EventArgs e) { ... string jsVersion=配置管理器。 AppSettings[“JsVersion”]; bool updateEveryAppStart=转换。 ToBoolean(ConfigurationManager.AppSettings[“UpdateJsEveryAppStart”]); int buildNumber=系统。 反思。 组装。 GetExecutingAssembly()。 获取名称()。 版本。 修订; JsPostfix=“”; #如果! 调试 JsPostfix+=“.min”; #结尾 JsPostfix+=“.js?”+jsVersion+“_”+buildNumber; if(updateEveryAppStart) { Random rand=新Random(); JsPosfix+=“_”+兰特。 下一步(); } ... }
函数latest_version($file_name){ echo$file_name。 “?”.filemtime($_SERVER['DOCUMENT_ROOT'].$file_name); }
<script type=“text/javascript”src=“<?php latest_version('/a-o/javascript/almanacka.js');?>”></script>
<script src=“ https://thesaasdomain.com/somejsfile.js “data-ut=”user_token“></script>
if($('script[src^=“ https://thesaasdomain.com/somejsfile.js? “]').长度!==0){ init(); }其他{ loadScript(“ https://thesaasdomain.com/somejsfile.js? “+guid()); } var loadscript=函数(scriptURL){ var head=document.getElementsByTagName('head')[0]; var script=document.createElement('script'); script.type='text/javascript'; script.src=脚本URL; head.appendChild(脚本); } var guid=函数(){ 返回“xxxxxxxx-xxxx-4xxx-yxxxx-xxxxxxxxxx”。替换(/[xy]/g,函数(c){ var r=数学随机数()*16|0,v=c=='x'? r:(r&0x3|0x8); return v.toString(16); }); } var init=函数(){ //我们的主要代码 }
免责声明:如果性能是您的一个大问题,请不要使用。
$(document).ready(function()){ $.getScript(“../data/playlist.js”,函数(数据,textStatus,jqxhr){ 启动程序(); }); });
<script src=“~/JsFilePath/ [电子邮件保护] ()“></script>
<link rel=“stylesheet”href=“~/css/site.min.css”asp-append-version=“true”/>
-
添加 onload=“location.reload();” 到我的表单允许我在刷新后获得新的JS,而不是重新启动我的页面。 这是一个更优雅的解决方案。 谢谢! – ZX9型 评论 2019年11月6日14:37 -
-
onload=“location.reload(true);”上述操作对我不起作用(使用烧瓶和当前版本的Chrome): w3schools.com/jsref/met_loc_reload.asp – 编码事项 评论 2019年12月30日23:20 -
这不会为我刷新缓存。调用“location”。 Reload(true)“只需重新加载页面,脚本就可以从“内存缓存”中获取。” 位置。 Reload()'从“磁盘缓存”获取脚本。 这两种情况都会得到最新的缓存(旧的)脚本。 – 切萨里 评论 3月15日17:38
RewriteEngine开 重写数据库/ 重写命令%{REQUEST_URI}\。 (jpe?g|bmp|png|gif|css|js|mp3|ogg)$[NC] 重写命令%{QUERY_STRING}^ (.+?&v33|)v=33[^&]*(?:&(.*)|)$[NC] 重写规则^%{REQUEST_URI}? v=33[R=301,L]
-
1
https://www.example.com/script_fv25.js
RewriteEngine开 重写规则(.*)_fv\d+\。 (js|css|txt|jpe?g|png|svg|ico|gif)$1.$2[L]
https://www.example.com/script.js
new Date().getTime()
//cache-express-after.js v1 函数cacheExpiresAfter(延迟=1,前缀=“”,后缀=“”){//秒 let now=new Date().getTime().toString(); now=now.substring(now.length-11,10);// 删除数十年和毫秒 now=parseInt(now/delay).toString(); 返回前缀+现在+后缀; }; //(延迟参数的)示例: //值每1秒更改一次 var cache=cacheExpiresAfter(1); //查看同步 setInterval(函数(){ console.log(cacheExpiresAfter(1),new Date().getSeconds()+'s'); }, 1000); //值每1分钟更改一次 var cache=cacheExpiresAfter(60); //查看同步 setInterval(函数(){ console.log(cacheExpiresAfter(60),new Date().getMinutes()+'m:'+new Date().getSeconds()+'s'); }, 1000); //值每5分钟更改一次 var cache=cacheExpiresAfter(60*5);// 或300 //值每1小时更改一次 var cache=cacheExpiresAfter(60*60);// 或3600 //值每3小时更改一次 var cache=cacheExpiresAfter(60*60*3);// 或10800 //值每1天更改一次 var cache=cacheExpiresAfter(60*60*24);// 或86400 //用法示例: let head=document.head ||document.getElementsByTagName('head')[0]; let script=document.createElement('script'); script.setAttribute('src','//unpkg.com/ [电子邮件保护] /dist/sweetallert.min.js'+cacheExpiresAfter(60*5,'?'); head.append(脚本); //这有效吗? let waitSwal=设置间隔(函数(){ if(窗口.swal){ clearInterval(waitSwal); swal('脚本成功注入',Script.outerHTML); }; }, 100);
<脚本> var版本=new Date().getTime(); var script=document.createElement(“script”); script.src=“app.js?=”+版本; document.body.appendChild(脚本); </script>
<头部> <元字符集=“UTF-8”> <meta http-equiv=“cache-control”content=“no-cache,must-revalization,post-check=0,pre-check=0”/> <meta http-equiv=“cache-control”content=“max-age=0”/> <meta http-equiv=“expires”content=“0”/> <meta http-equiv=“expires”content=“1980年1月1日星期二1:00:00 GMT”/> <meta http-equiv=“pragma”content=“no-cache”/> </头>
$fileVersion=rand(); <script src=“addNewStudent.js?v=<?php echo$fileVersion;?>”></script>
LoadModule headers_module modules/mod_headers.so加载模块头
#.js和.css文件的客户端缓存持续一天 <FilesMatch“\.(js|css)$”> 标题集Cache-Control“max-age=86400,必须重新验证” </FilesMatch>
<目录/PATHTOWW/mystatic/> <FilesMatch“\.(js)$”> 标题未设置Cache-Control </FilesMatch> </目录>
#禁用缓存 <IfModule mod_headers.c> <FilesMatch“\.js$”> 标题集Cache-Control“no-store,max-age=0” </FilesMatch> </If模块>