使用response來控制瀏覽器的緩存

        緩存這個技術在咱們實際的開發中是很是經常使用的,也是很是重要的一項技術。主要用於客戶端(瀏覽器)向服務器端請求的是一些比較大的數據,而且這個數據在短期內不會常常發生變化的狀況,好比一些網站的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實現緩存的小案例演示完畢,有不足的地方,但願你們多多提意見網站

相關文章
相關標籤/搜索