前端开发那些事儿前端

前端防止浏览器缓存

2020-08-18  本文已影响0人  小宇cool

由于浏览器缓存的机制, 如果用户之前访问过网站, 那么浏览器会缓存该网站的css.js, 这些css. js 缓存为过期这期, 浏览器只会从缓存中读取css和js, 如果服务器上修改了 css 和js, 那么在修改用户的浏览器是不会有变化的

当浏览器发一个http请求时, 会加载各种各样的资源, 例如HTMl文档,视频,图片, css和js, 对于这些url不变的资源, 浏览器会将他们保存到本地缓存中, 下次访问相同网站是, 可以直接加载, 加速访问.

方法一: 用户可以按Ctrl+f5强制刷新网页, 或手动清除了浏览器的缓存, 此时浏览器会从服务器获取css和js 文件, 新的文化就会生效

方法二:给js标签或者LInk的src或href动态添加一个随机数,每次刷新页面都会生成一个不同的src, 此时浏览器就会把js这个js 当成新的资源向服务器发送请求, 获取资源.

<script >
    function dynamic(){
        let script = document.createElement('script'),
            Link =  document.createElement('Link');
        Link.setAttribute('rel','stylesheet');
        Link.href = 'index.css' + '?' + Math.random()
        document.head.appendChild(Link)
        script.src = 'index.js' + '?' + Math.random()
        setTimeout(()=>{
            document.body.append(script)
        })
    }
    dynamic()
</script>

原理:在资源的url后加是数字, 对于文件的加载并不会有任何影响. 但是如果数字发生改变, 浏览器就会认为这是一个全新的文件, 会重新下载缓存, 不会读取之前缓存的文件, 所以加数字的作用是强制浏览器调用新地址, 防止缓存.

上一篇 下一篇

猜你喜欢

热点阅读