zoukankan      html  css  js  c++  java
  • tips 前端 阻止 浏览器缓存静态资源

    手机浏览器 uc上一直表现良好 qq浏览器还有微信上网址直接打开的(一样采用qq浏览器的内核) 大量缓存了静态资源

    css js 图片 等这些当出现改动了刷新网页根本没有效果

    电脑端浏览器没有问题 因为部分手机端浏览器 总会出于省流量性能等因素缓存静态资源本来没有什么问题 不过这会给开发带来困扰 不适合调试 如果只是这样还好 可是还是会对生产环境造成一定影响比如当服务器端的css文件内内容有了改动 手机端浏览器却一直没有释放缓存 就会造成一些页面上出现明显的问题所以给css js jpg swf 等加上时间戳是必要的,最好是每当文件做了修改就变动时间戳让浏览器去下载,而没有改动就调用浏览器缓存的文件

    所以可以这样

    1 <?php $css='/xxx/xxx.css' ?>
    2 <link rel="stylesheet" type="text/css" href="<?php echo "$css" . '?time=' . filemtime( $css ); ?>" />

     note:php 原则上'' ""是通用的,echo函数输出时 ' '内的内容会被解析为纯字符串, " "内的变量会被解析会变量的值,但是不能解析函数的值 .是php的连接符

        filemtime("file")将得到file最近一次修改时间,得到类似1430451431这个格式的unix时间戳

        原理是通过增加一个后缀改变了请求的文件的url,从而迫使浏览器认为这是不同的文件去下载更新缓存

        最终输出的内容就像 百度云的首页html源代码里这样

    <link href="/ppres/static/css/pcloud_feedpage_all.css?t=201504154611" rel="stylesheet" type="text/css"/>

    css 文件可以这样加时间戳,其它静态资源也可参照此加

    不过开发时也可以直接这样 让它每次都更新时间戳,

    <link rel="stylesheet" type="text/css" href="/xx/style.css?time=<?php echo time(); ?> " />

    其它语言如jsp asp 等同样可以轻易做到 

    不过不可以用javascript做 虽然可以用它这样得到时间戳

     1 <script>
     2 var time1=Date.parse(new Date());
     3 var time2=new Date().valueOf();
     4 var time3=new Date().getTime();
     5 console.log('timestamp:'+time1);
     6 console.log('timestamp:'+time2);
     7 console.log('timestamp:'+time3);
     8 
     9 /* time1的毫秒部分将是000,不会计算毫秒
    10  time2,time3会记录精确到毫秒,且结果相同 */
    11 </script>

    但是是没有意义的,在客户端即使插入到了引用路径中也是也是没有意义 因为请求是向服务器端发的 需要考虑一个是执行加时间戳的时间上 一个是服务器端的路由控制

    wordpress下也可以参照这样

    来自winy:http://www.hilau.com/1311273.html   /or/  http://www.laozhuhome.com/html/automatically-version-your-css-and-javascript-files

    用grunt作前端工作流时更可以使用这样一个tool

    automatic-version-increment

    很多方式,选喜欢的吧!

  • 相关阅读:
    dockerfile 镜像 指定虚拟机的内存
    springBoot整合MongoDB(动态查询)
    ubuntu 使用sudo apt-get update命令的时候会报http://archive.ubuntukylin.com:10006/ubuntukylin/dists/xenial/InRelease 无法连接
    在Ubuntu下进行MongoDB安装步骤
    艺术和代码的结合 turtle + python 的结合
    MySQL CPU性能定位
    送书丨《架构解密:从分布式到微服务》
    区块链在天猫国际商品溯源中的应用
    nginx gzip
    别被忽悠了!阿里内部人士:我们正悄悄地拆掉中台,你还在建?
  • 原文地址:https://www.cnblogs.com/isdom/p/webtips002.html
Copyright © 2011-2022 走看看