緩存這個技術在咱們實際的開發中是很是經常使用的,也是很是重要的一項技術。主要用於客戶端(瀏覽器)向服務器端請求的是一些比較大的數據,而且這個數據在短期內不會常常發生變化的狀況,好比一些網站的logo圖片,它是一個網站的標誌,通常不會發生變化,若是不緩存的話,而logo圖片又比較大的話,那麼瀏覽器每次發送請求時,服務端都要返回logo圖片這個大數據信息,會影響到服務器的性能和效率,服務器端變慢了,也勢必會致使用戶頁面看到的數據加載變慢。若是我麼對圖片進行一個合適時間內的緩存的話,這樣會大大提升服務端的效率,還能提升客戶端的用戶體驗呢!java
使用response來設置緩存,主要時設置http的響應頭的expires的信息,示例代碼以下:瀏覽器
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 設置緩存 * * @author Administrator 緩存是當瀏覽器第一次發送請求,若是服務器設置了緩存,就會將第一次請求得到的數據緩存在瀏覽器,那麼在緩存時間內,瀏覽器是不會想服務器發送請求的,直接從緩存中獲取數據 */ @WebServlet("/buff.do") public class BufferServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 這裏的時間是從1970開始,因此要設置當前時間+緩存的時間,時間單位爲毫秒,這裏緩存的時間爲1分鐘 response.setDateHeader("expires", System.currentTimeMillis() + 1000 * 60); // 用來測試在緩存時間內,瀏覽器是否還向服務端發送請求 System.out.println("enter"); // 模擬的大數據 String bigData = "this is a big data,but it is not change."; response.getWriter().print(bigData); } }
在緩存時間內不管你發送了多少次請求輸出的結果:緩存
enter服務器
而且從請求的響應頭性能
Server: Apache-Coyote/1.1
Expires: Fri, 07 Jul 2017 07:49:26 GMT
Content-Length: 40
Date: Fri, 07 Jul 2017 07:48:26 GMT測試
從上面的結果能夠看出,當咱們在服務端設置了緩存了,那麼在緩存時間內,瀏覽器發送請求,取得數據時從本地緩存中獲取的。大數據
至此,一個簡單的使用response實現緩存的小案例演示完畢,有不足的地方,但願你們多多提意見網站