纯静态页面,如何更优雅的强刷

没有使用任何构建工具,后端语言
纯HTML页面,如何每次更新上传之后,用户访问会自动更新

1:手动加标识戳?

阅读 3.6k
4 个回答

首先回答这个问题之前 我需要说的是HTML页面,为什么每次更新上传之后,用户访问为什么不是你最新上传的东西

因为浏览器有缓存机制,第一次浏览之后会自动缓存页面的css,js 等

所以解决这个问题的方案有如下(方式应该很多,目前想到的就是这两个)

  1. meta方式 参考原文
  <META HTTP-EQUIV="pragma" CONTENT="no-cache"><!-- 禁止浏览器从本地计算机的缓存中访问页面内容 --> 
        <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"><!-- 用于指定请求和响应遵循的缓存机制 --> 
        <META HTTP-EQUIV="expires" CONTENT="0"><!-- 用于设定网页的到期时间,一旦网页过期,必须到服务器上重新传输; -->
  1. 加一个随机字符串,跟你src(或者link)的路径后面 这样每次跟新完毕提交字符串都会改变,字符串改变了浏览器认为是新文件就会重新加载一次
示例
<script type=”text/javascript“ src=”/js/test.js?+Math.random()“></script> 

我以前也有过这样的想法, 纯html你想加时间戳, 只能通过javascript动态加载文件, 比如(下面语法是不对的, 但是难得想了, 参考下就好)

append('<link rel="stylesheet" href="a.css?_='+ (+new Date()) +'">')

最好还是用构建工具,那样方便一点,或者后台也可以。纯html就只能把css,js那些弄成动态加载了,在js里面去加载css和js,并加个时间轴为标识!

<script type="text/javascript">

$.getScript("test.js?v="+Math.random(),function(){

$.getScript("test2.js?v="+Math.random());

});
</script>

题主目前采用的方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题