getLastModified()方法和瀏覽器緩衝

來源:互聯網
上載者:User

在HttpServlet類中,service負責更具http請求的類型分發給各doXxx()方法處理,源碼如下:

protected void service(HttpServletRequest req, HttpServletResponse resp)    throws ServletException, IOException  {    String method = req.getMethod();//根據http請求method的不同作不同處理    if (method.equals("GET")) {       //擷取嵌在http請求中的If-Modified-Since參數,這個欄位是瀏覽器最後一次重新整理緩衝的時間,如果第一次請求就沒有       //比較If-Modified-Since參數和lastModified 的新舊,決定是否重新整理瀏覽器緩衝。如果lastModified 使用預設的-1L,總是重新整理。       //If-Modified-Since參數:伺服器制定客戶只想要那些自特定日期以來發生改變的頁面 lastModified :伺服器端返回的東西需要調整的時間點,比如代碼  做了修改,或者別的。       long lastModified = getLastModified(req);      if (lastModified == -1L)      {        doGet(req, resp);      } else {        long ifModifiedSince = req.getDateHeader("If-Modified-Since");        if (ifModifiedSince < lastModified / 1000L * 1000L)        {          maybeSetLastModified(resp, lastModified);//重新設定瀏覽器的參數          doGet(req, resp);        } else {          resp.setStatus(304);        }      }    }    else if (method.equals("HEAD")) {      long lastModified = getLastModified(req);      maybeSetLastModified(resp, lastModified);      doHead(req, resp);    }    else if (method.equals("POST")) {      doPost(req, resp);    }    else if (method.equals("PUT")) {      doPut(req, resp);    }    else if (method.equals("DELETE")) {      doDelete(req, resp);    }    else if (method.equals("OPTIONS")) {      doOptions(req, resp);    }    else if (method.equals("TRACE")) {      doTrace(req, resp);    }    else    {      String errMsg = lStrings.getString("http.method_not_implemented");      Object[] errArgs = new Object[1];      errArgs[0] = method;      errMsg = MessageFormat.format(errMsg, errArgs);      resp.sendError(501, errMsg);    }  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.