【JS】【11】清理緩存

前言:項目更新後JS,CSS文件常出現緩存問題,代碼已更改,但在有些客戶端不會當即生效javascript

解決方案:加時間戳css

可是加時間戳也有不一樣的方案,手動加太麻煩,不過能夠快速處理問題。html

jsp頁面:java

<% 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模板文件):apache

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

上面兩種方法也有問題,在代碼沒有更新的狀況下,每次用戶訪問頁面也都要從新拉取靜態文件。並且html頁面是沒有上面兩種寫法的。緩存

還有一種方法是訪問後臺路由時返回時間戳。侵入性太強,並且一樣存在上面的問題。jsp

一種較爲通用的寫法:測試

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

控制版本號:TODOui

頁面請求頭加禁止緩存,我測試是沒什麼用,也在這裏記錄一下:spa

<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

相關文章
相關標籤/搜索