通常狀況下,網站在第二次加載時,加載時間會大大被提高,這是由於網頁中的一些資源被客戶端緩存下來了,網頁在二次加載的時候就不須要從新從遠處服務器請求資源,而是直接應用客戶端緩存好的數據。css
扯遠了···vim
Web緩存優化是一種提升現有系統利用率的方式,是處於用戶和Web服務器之間的信息緩衝機制,基本思想是:利用了Web頁面訪問的時間的局部性,把用戶常常訪問的信息放到用戶的附近或本地,以便用戶後續訪問能從客戶端和本地服務器獲取信息,沒必要訪問遠程服務器。Web緩存經過信息的本地化來加快網頁瀏覽速度,在必定程度上節省網絡帶寬,減小服務器負荷。瀏覽器
由緩存實現的位置不一樣能夠將Web緩存分爲三類,即客戶端緩存,代理緩存,服務器端緩存。客戶端緩存主要在客戶機瀏覽器端實現,將用戶請求的數據緩存在本地,這種方法響應時間最短,可是不能被局域網所共享;代理緩存指代理服務器緩存,代理服務器位於客戶端與服務器之間,代理服務器在接到用戶請求時,將緩存信息返回給用戶,若是請求信息不在緩存中,則請求遠程服務器,代理緩存的優勢是能夠被局域網共享;服務器緩存指將服務器端動態數據緩存給客戶端使用。緩存
並非全部Web資源都是能夠被緩存的。那麼從客戶端優化角度,提升Web資源的可緩存話就會提升客戶端的性能。服務器
影響Web緩存的因素主要有HTTP請求方法,請求參數設置以及HTTP狀態碼。HTTP/1.1規定Web請求方法有GET、HEAD、POST、DELETE、OPTION、CONNECT和TRACE八種,只有GET與POST請求是可緩存的。cookie
根據HTTP狀態碼可將Web對象緩存性分爲三種。可緩存的有:200、20三、300、30一、401;消極緩存的HTTP狀態碼:20四、30五、400、40三、40四、40五、41四、500、50二、504;不可緩存的HTTP狀態碼:100、10一、20一、20二、20五、20六、30二、30三、30四、30七、40一、40二、40六、40七、40八、40九、4十一、4十二、41三、41五、50一、505.網絡
Web緩存中的生命週期是指Web對象相鄰兩次修改的時間。HTTP中對Web生命週期進行描述的參數有Expires
和last modified
等,大部分時候靠last modified
參數來判斷Web對象的生命週期。當某一Web資源進行修改後,Web緩存服務器中並無進行相應的修改,這時候用戶請求該資源並訪問Web對象是否包含Expires
字段,若是包含則進行校驗,符合則返回當前資源,若是不包含該字段,Web緩存服務器會向遠程服務器發起GET-If-modified
請求,併發送當前last modified
字段,若是響應不包含last modified
字段,則使用當前last modified
值。併發
不可緩存HTTP頭部信息 | 不可緩存HTTP頭部信息參數含義 |
---|---|
缺乏 last modified 參數的對應信息 |
last modified time 指出服務器認出Web對象被修改的最後日期和時間,即若對象在 last modified time 值域之後被修改過,則該對象是不可緩存的。若服務器的返回值是304 not modified ,則對象可被緩存 |
設置 set cookie |
當緩存控制信息 cache-control 被設置爲「不可緩存」或是「私有」時,該對象是不可緩存的 |
設置 Pragma:no-cache |
當頭部信息中有此設置時,服務器禁止請求從緩存響應。此時該對象是不可緩存的 |
設置 authorization |
當返回的頭部信息中包含我的信息時,緩存對象的效率很低。此時該對象是不可緩存對象 |
添加Expires字段能夠增加Web對象生命週期。Expires字段告訴Web客戶端,在指定的時間以前均可以使用現有的Web對象,不須要從新下載。假如在HTTP響應中出現這樣的Expires:svg
expires:Sat, 03 Sep 2016 14:33:39 GMT性能
這個字段告訴瀏覽器,該資源的生命週期能夠持續到2016年9月3日。若是Web網頁中某一段資源返回了這個頭,那麼瀏覽器在之後加載這個頁面時,會使用緩存中的本地資源,用戶在二次訪問的時候就節省了下載時間。
打開Nginx的站點配置文件,這裏考慮給圖片資源添加30天的有效期,給css和js添加7天有效期,也給字體資源添加30天的有效期。
在server{}
裏添加下面代碼:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } location ~ .*\.(eot|ttf|otf|woff|svg)$ { expires 30d; access_log off; }
實踐的東西很少,另外再次對網站進行一次提速,過幾天就開始對服務器進行升級,但願會更大的訪問速度的提高。這篇文章寫得好累啊!
文章首發於:https://www.linpx.com