2011-03-08 112 views
1

我想從jsp文件加載html頁面。喜歡這個。我將文件名從控制器提供給jsp,並使用dojo調用另一個控制器並傳遞文件名。網頁不顯示新文件內容

<script type="text/javascript"> 
var url = dojo.moduleUrl("dijit.form", "<c:url value="/getfile?Name=${fileName}"/>"); 
    dojo.xhrGet({ 
    url: url, 
    load: function(html){ 
     dojo.byId("mycontent").innerHTML = html; 
    } 
}); 

它流文件內容到JSP。 我的問題是,當我改變它沒有反映的文件的內容。對於Firefox,我必須使用Ctrl + F5,對於IE,我必須手動清除緩存。 我該如何避免這種情況? 我給了

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
<meta HTTP-EQUIV="Expires" CONTENT="0"/> 
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache"/> 
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache"/> 

在我的jsp文件和html文件中。

+0

怪異覺得你不應該需要修改的JavaScript的HTML時realod或什麼... – Tsadiq 2011-03-08 13:08:48

回答

3

兩種方式:

  1. 把它放在HTTP響應頭,而不是在HTML頭。元標記僅在從本地磁盤文件系統打開文件時解釋,而不是在通過HTTP獲取文件時解釋。 A Filter是完美的工具。此外,您還忘了兩個Cache-Control設置。這裏有一個完整的一套:

    HttpServletResponse hsr = (HttpServletResponse) response; 
    hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
    hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
    hsr.setDateHeader("Expires", 0); // Proxies. 
    chain.doFilter(request, response); 
    

    地圖這Filter匹配的HTML文件所需的URL模式。

  2. 向查詢字符串添加時間戳,以便瀏覽器緩存被愚弄。

    var url = dojo.moduleUrl("dijit.form", "<c:url value="/getfile?Name=${fileName}"/>&" + new Date().getTime());