JavaWeb禁止瀏覽器緩存當(dāng)前Web頁面的方法
所謂瀏覽器緩存,是指當(dāng)?shù)谝淮卧L問網(wǎng)頁時,瀏覽器會將這些網(wǎng)頁緩存到本地,當(dāng)下一次再訪問這些被緩存的網(wǎng)頁時,瀏覽器就會直接從本地讀取這些網(wǎng)頁的內(nèi)容,而無需再從網(wǎng)絡(luò)上獲取。
雖然瀏覽器提供的緩存功能可以有效地提高網(wǎng)頁的裝載速度,但對于某些需要實時更新的網(wǎng)頁,這種緩存機制就會影響網(wǎng)頁的正常顯示。幸好在HTTP響應(yīng)消息頭中提供了三個字段可以關(guān)閉客戶端瀏覽器的緩存功能。下面三條語句分別使用這三個字段來關(guān)閉瀏覽器的緩存:
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
雖然上面三個HTTP響應(yīng)消息頭字段都可以關(guān)閉瀏覽器緩存。但并不是所有的瀏覽器都支持這三個響應(yīng)消息頭字段,因此,最好同時使用上面這三個響應(yīng)消息頭字段來關(guān)閉瀏覽器的緩存。
例子 : 禁止瀏覽器緩存當(dāng)前Web頁面
1. 實例說明
本程序演示了在未關(guān)閉瀏覽器緩存和關(guān)閉瀏覽器緩存兩種情況下,通過form提交請求消息時的表現(xiàn)。
2. 編寫Cache類
在Cache類中同時使用上述的三個響應(yīng)消息頭字段關(guān)閉了瀏覽器緩存,并向客戶端輸出一段HTML代碼,以測試關(guān)閉緩存和未關(guān)閉緩存的效果。Cache類的實現(xiàn)代碼如下:
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"))
{
// 關(guān)閉瀏覽器緩存
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代碼
}
}
從上面的代碼可以看出,當(dāng)cache請求參數(shù)值為false時關(guān)閉瀏覽器的緩存。
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. 測試未關(guān)閉瀏覽器緩存的情況
在瀏覽器地址欄中輸入如下的URL:
http://localhost:8080/demo/Cache?cache=true
在【姓名】文本框中輸入任意字符串,點擊【提交】按鈕,這時瀏覽器會顯示一個異常(這個異常是由于所提交的test不存在而產(chǎn)生的,我們不用去管它),然后點擊瀏覽器的返回按鈕回到剛才輸入數(shù)據(jù)的頁面。我們可以看到,剛才輸入的字符串仍然存在。這說明在返回時,瀏覽器并未從服務(wù)端重新獲得這個頁面,而是從本地的緩存里重新加載了當(dāng)前的頁面。
5. 測試關(guān)閉瀏覽器緩存的情況
在瀏覽器地址欄中輸入如下的URL來關(guān)閉瀏覽器緩存:
http://localhost:8080/demo/Cache?cache=false
按著上一步的方式提交并返回,發(fā)現(xiàn)剛才輸入的數(shù)據(jù)沒有了。這說明在關(guān)閉瀏覽器緩存后,每次返回時,瀏覽器總會從服務(wù)端重新獲得當(dāng)前頁面。因此,當(dāng)前頁面總是保持著初始值。
6. 程序總結(jié)
在關(guān)閉瀏覽器緩存時,為了盡可能保證在大多數(shù)瀏覽器中都有效,我建議同時使用上述三個HTTP響應(yīng)消息頭字段來關(guān)閉瀏覽器緩存。
總結(jié)
以上所述是小編給大家介紹的JavaWeb禁止瀏覽器緩存當(dāng)前Web頁面的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
一文詳解如何在Java?Maven項目中使用JUnit?5進行測試
這篇文章主要介紹了如何在Java?Maven項目中使用JUnit?5進行測試的相關(guān)資料,JUnit5是一個流行的Java測試框架,它涵蓋了JUnit5的概述、環(huán)境配置、編寫測試用例、運行測試、高級特性和最佳實踐,需要的朋友可以參考下2025-04-04
SSH框架網(wǎng)上商城項目第3戰(zhàn)之使用EasyUI搭建后臺頁面框架
SSH框架網(wǎng)上商城項目第3戰(zhàn)之使用EasyUI搭建后臺頁面框架,討論兩種搭建方式:基于frameset和基于easyUI,感興趣的小伙伴們可以參考一下2016-05-05
Spring ApplicationContextAware 接口的作用及使用方式
Spring提供了許多回調(diào)接口,用于Bean生命周期中執(zhí)行特定的操作,通過實現(xiàn)ApplicationContextAware接口,Spring提供了一種便捷的方式讓 Bean獲取對Spring容器的引用,本文介紹ApplicationContextAware接口的作用、使用方式,以及在實際應(yīng)用中的常見場景,感興趣的朋友一起看看吧2024-01-01
Springboot程序在使用Maven下載依賴時失效的解決方法
以前能成功創(chuàng)建SpringBoot項目并運行,但是現(xiàn)在再創(chuàng)建新項目時Maven下載依賴失敗,且maven依賴刷新按鍵一直沒反應(yīng),所以本文給大家介紹了Springboot程序在使用Maven下載依賴時失效的解決方法,需要的朋友可以參考下2024-05-05
深入淺析springboot中static和templates區(qū)別
這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
springboot druid數(shù)據(jù)庫配置密碼加密的實現(xiàn)
Druid是阿里開發(fā)的數(shù)據(jù)庫連接池,本文主要介紹了springboot druid數(shù)據(jù)庫配置密碼加密的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-06-06
SpringBoot Actuator埋點和監(jiān)控及簡單使用
最近做的項目涉及到埋點監(jiān)控、報表、日志分析的相關(guān)知識,于是搗鼓的一番,下面把涉及的知識點及SpringBoot Actuator埋點和監(jiān)控的簡單用法,給大家分享下,感興趣的朋友一起看看吧2021-11-11

