頁面靜態化

2021-09-13 19:16:08 字數 2012 閱讀 5996

瀏覽器向伺服器每次傳送請求都比較耗費資源和時間,當訪問量特別大的時候會對伺服器造成很高的壓力,這個時候頁面靜態化就可以起到減少伺服器的壓力。

頁面靜態化 -- 把一些變化很少的動態頁面,通過技術轉化為靜態頁面。

靜態頁面的可以被快取在瀏覽器中,第一次請求需要發給伺服器,後面的再次請求(在快取時間內),只需要在本地瀏覽器快取中讀取靜態頁面並展示。

當第一次請求,伺服器如果返回乙個靜態頁面,瀏覽器會把它放入快取中。後續訪問這個頁面,瀏覽器不會再次傳送請求給伺服器,而是直接從快取中獲取該頁面。使用f5重新整理頁面會使得瀏覽器跳過快取,再次向伺服器請求。由於瀏覽器快取距離使用者最近,所以響應最快,快取帶來的效能提公升最高。

靜態頁面快取,會有乙個 max-age 即最大存活期,超過這個期限的快取資訊不在起作用,請求就會傳送給伺服器。

超過 max-age 的請求會傳送給伺服器,但是伺服器會根據最新修改時間來判斷,如果伺服器發現頁面在這一段時間內並沒有發生變化,會給請求者返回304狀態嗎。

告訴瀏覽器,這個頁面並沒有發生變化,此時瀏覽器會繼續從快取中讀取該靜態資訊展示。雖然仍會向伺服器傳送請求,但可以減少網路傳輸資料對伺服器造成的壓力。

如果請求傳送的位置距離伺服器過遠的時候,會造成資料遠距離傳輸,造成效能較低。我們可以將請求(獲取靜態資源)傳送給請求地和伺服器中間的乙個距離最近的cdn伺服器,由cdn伺服器返回結果。第一次請求的時候cdn伺服器會從主伺服器中讀取靜態資源(、html)存入到快取中。

將動態頁面生成為靜態頁面,以便利用上述幾種快取,提高效能。

具體步驟如下:

1、利用spring提供的resttemplate類訪問動態頁面

2、會返回一端html的結果,將該結果寫入到乙個html頁面中

具體**如下:

resttemplate template = new resttemplate();

//建立請求頭物件

//向請求頭中新增登陸過後的cookie,模擬登陸以後的賬號傳送請求

//建立接受結果的entity物件

httpentity entity = new httpentity(null, headers); // 包含了請求頭和請求體

//呼叫resttemplate物件的exchange()方法請求該路徑

//獲取響應的html字串,寫入乙個檔案

fileoutputstream out = new fileoutputstream("f:\\html\\***.html");

out.write(response.getbody().getbytes("utf-8"));

out.close();

exchange()方法需要三個引數,第乙個引數是訪問路徑,第二個引數是請求格式,第三個引數接受響應結果的entity物件,第四個引數是響應資料的型別。

3、將html寫入到本地磁碟以後,只需要在專案中配置訪問靜態的檔案的方式即可。

我這個例子中是springboot專案所以我通過配置類來配置靜態資源訪問。

配置如下:

@configuration 

public class mywebconfig implements webmvcconfigurer

public void addinterceptors(interceptorregistry registry)

}

如果是springmvc專案,需要在xml檔案中配置如下,也可以進行靜態資源配置

//todo

頁面靜態化

隨著 的內容的增多和使用者訪問量的增多,無可避免的是 載入會越來越慢,受限於頻寬和伺服器同一時間的請求次數的限制,我們往往需要在此時對我們的 進行 優化和伺服器配置的優化。一般情況下會從以下方面來做優化 什麼是靜態化?純靜態 將php程式生成靜態的html檔案,儲存到伺服器的磁碟中。客戶端訪問的時候...

頁面靜態化

header content type text html charset utf8 set time limit 0 url str file get contents url var dump str die reg isu preg match all reg,str,arr var dump...

頁面靜態化

隨著 的內容的增多和使用者訪問量的增多,無可避免的是 載入會越來越慢,受限於頻寬和伺服器同一時間的請求次數的限制,我們往往需要在此時對我們的 進行 優化和伺服器配置的優化。一般情況下會從以下方面來做優化 1.為什麼要靜態化?一 加快頁面開啟瀏覽速度,因為無需連線資料庫 二 有利於搜尋引擎優化seo ...