在開發、調試js時,常常碰到firefox、chrome的緩存問題,有時候清空緩存還不生效,有時候還重啓tomcat什麼的,也麻煩。javascript
後來想到用時間戳來區別版本,可是,又不是每次全部的代碼都要更新,每次訪問都用系統的時間戳很差用,緩存就成擺設了。html
再後來,想到能夠根據每一個js文件的修改時間來設置,其實對動態腳本一竅不通,由於頁面的風格就是html+ajax,冠以jsp的後綴而已。最後用土辦法解決了,代碼大概就是下面的內容了,getTime.jsp。java
<%! public long[] getTime(String basePath, String... files) { int size = files.length; long[] t = new long[size]; for(int i = 0; i < size; i++) { t[i] = (new File(basePath + files[i])).lastModified(); } return t; } %>
傳入路徑、須要獲取時間戳的文件名,而後返回long類型的最後修改時間。頁面代碼大概以下:jquery
<%@page contentType="text/html;charset=UTF-8" language="java" import="java.io.File" errorPage=""%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <%@include file="getTime.jsp"%> <% String web_path=request.getContextPath(); String realPath = application.getRealPath("/"); long t[] = getTime(realPath, "/js/common.js", "/view/frame/js/main.js"); %> <head> <!-- 省略 --> </head> <body> <!-- 省略 --> <script type="text/javascript" src="<%=web_path%>/js/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="<%=web_path%>/js/common.js?v=<%=t[0]%>"></script> <script type="text/javascript">var web_path = '<%=web_path%>' || getContextPath();</script> <script type="text/javascript" src="<%=web_path%>/view/frame/js/main.js?v=<%=t[1]%>"></script> </body> </html>
最後在頁面上能夠看到時間戳了。web
不懂別人怎麼作的。暫時簡單解決了問題,就是沒放到項目中使用,純屬測試代碼。ajax