您好,登錄后才能下訂單哦!
所謂瀏覽器緩存,是指當第一次訪問網頁時,瀏覽器會將這些網頁緩存到本地,當下一次再訪問這些被緩存的網頁時,瀏覽器就會直接從本地讀取這些網頁的內容,而無需再從網絡上獲取。
雖然瀏覽器提供的緩存功能可以有效地提高網頁的裝載速度,但對于某些需要實時更新的網頁,這種緩存機制就會影響網頁的正常顯示。幸好在HTTP響應消息頭中提供了三個字段可以關閉客戶端瀏覽器的緩存功能。下面三條語句分別使用這三個字段來關閉瀏覽器的緩存:
response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache");
雖然上面三個HTTP響應消息頭字段都可以關閉瀏覽器緩存。但并不是所有的瀏覽器都支持這三個響應消息頭字段,因此,最好同時使用上面這三個響應消息頭字段來關閉瀏覽器的緩存。
例子 : 禁止瀏覽器緩存當前Web頁面
1. 實例說明
本程序演示了在未關閉瀏覽器緩存和關閉瀏覽器緩存兩種情況下,通過form提交請求消息時的表現。
2. 編寫Cache類
在Cache類中同時使用上述的三個響應消息頭字段關閉了瀏覽器緩存,并向客戶端輸出一段HTML代碼,以測試關閉緩存和未關閉緩存的效果。Cache類的實現代碼如下:
public class Cache extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String cache = request.getParameter("cache"); if (cache != null) { if (cache.equals("false")) { // 關閉瀏覽器緩存 response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); } } // 定義HTML代碼 String html = "<form id = 'form', action='test' method='post'>" + "姓名:<input type='text' name = 'name'/>" + "<input type='submit' value='提交' />" + "</form>"; PrintWriter out = response.getWriter(); out.println(html); // 向客戶端輸出HTML代碼 } }
從上面的代碼可以看出,當cache請求參數值為false時關閉瀏覽器的緩存。
3. 配置Cache類
Cache類的配置代碼如下:
<servlet> <servlet-name>Cache</servlet-name> <servlet-class>chapter5.Cache</servlet-class> </servlet> <servlet-mapping> <servlet-name>Cache</servlet-name> <url-pattern>/Cache</url-pattern> </servlet-mapping>
4. 測試未關閉瀏覽器緩存的情況
在瀏覽器地址欄中輸入如下的URL:
http://localhost:8080/demo/Cache?cache=true
在【姓名】文本框中輸入任意字符串,點擊【提交】按鈕,這時瀏覽器會顯示一個異常(這個異常是由于所提交的test不存在而產生的,我們不用去管它),然后點擊瀏覽器的返回按鈕回到剛才輸入數據的頁面。我們可以看到,剛才輸入的字符串仍然存在。這說明在返回時,瀏覽器并未從服務端重新獲得這個頁面,而是從本地的緩存里重新加載了當前的頁面。
5. 測試關閉瀏覽器緩存的情況
在瀏覽器地址欄中輸入如下的URL來關閉瀏覽器緩存:
http://localhost:8080/demo/Cache?cache=false
按著上一步的方式提交并返回,發現剛才輸入的數據沒有了。這說明在關閉瀏覽器緩存后,每次返回時,瀏覽器總會從服務端重新獲得當前頁面。因此,當前頁面總是保持著初始值。
6. 程序總結
在關閉瀏覽器緩存時,為了盡可能保證在大多數瀏覽器中都有效,我建議同時使用上述三個HTTP響應消息頭字段來關閉瀏覽器緩存。
總結
以上所述是小編給大家介紹的JavaWeb禁止瀏覽器緩存當前Web頁面的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。