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


        緩存這個技術在我們實際的開發中是非常常用的,也是非常重要的一項技術。主要用於客戶端(瀏覽器)向服務器端請求的是一些比較大的數據,並且這個數據在短時間內不會經常發生變化的情況,比如一些網站的logo圖片,它是一個網站的標志,一般不會發生變化,如果不緩存的話,而logo圖片又比較大的話,那么瀏覽器每次發送請求時,服務端都要返回logo圖片這個大數據信息,會影響到服務器的性能和效率,服務器端變慢了,也勢必會導致用戶頁面看到的數據加載變慢。如果我么對圖片進行一個合適時間內的緩存的話,這樣會大大提高服務端的效率,還能提高客戶端的用戶體驗呢!

  使用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實現緩存的小案例演示完畢,有不足的地方,希望大家多多提意見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM