zoukankan      html  css  js  c++  java
  • 【JS】【11】清理缓存

    前言:项目更新后JS,CSS文件常出现缓存问题,代码已更改,但在有些客户端不会立即生效

    解决方案:加时间戳

    但是加时间戳也有不同的方案,手动加太麻烦,不过可以快速处理问题。

    jsp页面:

    <% String dateTime = org.apache.commons.lang.time.DateFormatUtils.format(java.util.Calendar.getInstance(), "yyyyMMddHHmmss"); %>
    <script type="text/javascript" src="/js/xx.js?v=<%=dateTime%>"></script>
     <link rel="stylesheet" type="text/css" href="/css/layout.css?v=<%=System.currentTimeMillis() %>">

    ftl页面(FreeMarker模板文件):

    <script type="text/javascript" src="/js/xx.js?v=${.now}"></script>

    上面两种方法也有问题,在代码没有更新的情况下,每次用户访问页面也都要重新拉取静态文件。而且html页面是没有上面两种写法的。

    还有一种方法是访问后台路由时返回时间戳。侵入性太强,而且同样存在上面的问题。

    一种较为通用的写法:

    <script>document.write("<script type='text/javascript' src='/js/xx.js?v=" + Date.now() + "'></script>");</script>

    控制版本号:TODO

    页面请求头加禁止缓存,我测试是没什么用,也在这里记录一下:

      <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
      <meta http-equiv="Pragma" content="no-cache" />
      <meta http-equiv="Expires" content="0" />

    参考博客:

    html里script标签src自动加上时间戳,降低缓存影响 - lllo3o的博客 - CSDN博客
    https://blog.csdn.net/lllo3o/article/details/78292663

    HTML页面自动清理js、css文件的缓存(自动添加版本号) - sinat_29740819的博客 - CSDN博客
    https://blog.csdn.net/sinat_29740819/article/details/72875811

  • 相关阅读:
    快速排序
    09-HQL:Group、Order
    08-表属性操作
    07-数据导出及动态分区
    06-数据加载
    05-Hive数据操作
    04-表操作2
    03-表操作1
    [原创]IPV4分组的格式
    mysql中having和where的区别
  • 原文地址:https://www.cnblogs.com/huashengweilong/p/10808738.html
Copyright © 2011-2022 走看看