zoukankan      html  css  js  c++  java
  • 浏览器缓存问题

    最近一直思考一个问题。

    http缓存问题。

    很多都是使用meta设置expires 、Cache-Control这些字段,而然后再http相应报文头里可以看到所设置值。

    但还是解决不了不缓存的问题,因为他们的主要作用还是再强缓存与协商缓存里。

    资料:彻底理解浏览器缓存机制

    而对不缓存的设置还不是很友好,可以说很不容易。

    所以一些还是从请求url里寻找,比如加版本号什么的,只要让链接认为是新链接目标就达到了。

    所以现在很多都是加版本号什么的。

    而url就hash,这是无法实现的,因为hash在浏览器链接认为是一个锚点,定位当前页所在位置,不会上送,所以对链接没有变化,

    那么链接不能识别为新链接。

    history.replaceState(null, "page 2", window.location.href+"?v=01");
    window.location.href = "h1.html";
    history.replaceState方法只会替换当前链接到历史记录里,不会刷新的。
    但后退到这里就会刷新了。
    不过IOS或别的一些浏览器会有缓存优化,不会刷新历史记录的链接,那么可以使用onpageshow事件判断是否缓存手动刷新,只是可能会有闪动效果不太友好,
    这里可以使用一些遮罩之类缓和一下。
    window.addEventListener('pageshow', function(event) {
                if (event.persisted) location.reload();    //如果检测到页面是从“往返缓存”中读取的,刷新页面
            });












  • 相关阅读:
    mysql 索引学习笔记
    mysql mysqli pdo学习总结
    Flask-Login的实现
    Flask配置方法
    Flask-SQLAlchemy使用方法
    alpha阶段绩效考核
    Alpha版本后的心得体会
    代码及数据库展示
    功能简介
    最新的用户需求分析
  • 原文地址:https://www.cnblogs.com/zhangzhicheng/p/8886838.html
Copyright © 2011-2022 走看看