為什么要講HTTP頭?
1、 非常簡(jiǎn)單的通過HTTP頭,可以讓你的用戶打開速度快10倍。
2、 網(wǎng)上講HTTP頭的文章,都講的太玄乎和專業(yè),實(shí)際價(jià)值不大。
3、 太多人看了太多亂七八糟的文章,加了很多自己也不知道干嘛用的HTTP頭。
4、 HTTP頭過大會(huì)阻塞你的用戶訪問,你考慮過嗎?如何讓你的HTTP頭正好夠用,能夠起到效果又不要過于臃腫堵塞你的用戶,你考慮過嗎?
什么是HTTP頭?
HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型。
客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求頭包含請(qǐng)求的方法、URI、協(xié)議版本、以及包含請(qǐng)求修飾符、客戶信息和內(nèi)容的類似于MIME的消息結(jié)構(gòu)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),相應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯(cuò)誤編碼加上包含服務(wù)器信息、實(shí)體元信息以及可能的實(shí)體內(nèi)容。
以上是抄來(lái)的,其實(shí)我不想講,呵呵,但是普及下吧。
下面是我們這一篇中主講的
HTTP響應(yīng)頭的管理
哪些是常用的HTTP響應(yīng)頭?
看圖:
![](/d/20211019/6020a53f88fe7124ed756dd8db388093.gif)
總結(jié)來(lái)看,常用的HTTP頭如下:
![](/d/20211019/e52fb4aa00bb9a445f120d744e38593f.gif)
哪些頭需要好好管理?
Cache-Control
這是個(gè)無(wú)比妙用的頭,它可以讓你的首頁(yè),從2MB,變成200KB。
沒錯(cuò),就是它。
我們先看看別人用了它之后,做到了啥。
![](/d/20211019/97e863d030043503a2c1c5ac96747969.gif)
減少了這么多,網(wǎng)站和用戶雙贏,靠的就是這個(gè)頭。下面我將講下具體如何用。
Last-Modify
這個(gè)頭好用,那就用是了,為什么還要單獨(dú)拿出來(lái)說(shuō)?
是因?yàn)檫@個(gè)頭,有個(gè)小的隱藏風(fēng)險(xiǎn),見過很多人中標(biāo),我指出來(lái),希望更多的人可以看到,之后避免。
很多網(wǎng)站,在更新網(wǎng)站或者發(fā)布網(wǎng)站臨時(shí)維護(hù)信息時(shí),會(huì)采用將老的文件,剪切到其他目錄,然后本地再上傳一個(gè)同名文件進(jìn)行文件更新或者網(wǎng)站的頁(yè)面更新。當(dāng)更新的頁(yè)面出問題或者維護(hù)結(jié)束他們使用正常頁(yè)面給用戶服務(wù),會(huì)立刻把老的文件剪切回來(lái),覆蓋舊文件。
這就有一個(gè)非常大的問題。
因?yàn)閷?duì)于已經(jīng)訪問過網(wǎng)站的人來(lái)說(shuō),他們已經(jīng)把文件緩存到了本地。當(dāng)用戶再次訪問網(wǎng)站時(shí),會(huì)發(fā)送一個(gè)If-Modify-Since請(qǐng)求。
老文件 Last-Modified: 舊時(shí)間
新文件 Last-Modified: 新時(shí)間
當(dāng)你用舊文件替換新文件后,由于新文件的最后修改時(shí)間要早于舊文件的,所以,IE不會(huì)讓用戶拿到?jīng)]有問題的舊文件,而是讓他們使用新文件。
所以,如果你使用用舊文件替代新文件,一定要對(duì)舊文件做個(gè)小的處理,使其更新最后修改時(shí)間,不然,用戶依然會(huì)訪問出問題的頁(yè)面或者是維護(hù)頁(yè)面。
如何用好Cache-Control?
當(dāng)你不想讓用戶緩存時(shí),你只需要添加一個(gè)頭,no-store即可,其他no-cache、must、must-revalidate、proxy-revalidate等都沒必要用,因?yàn)閚o-store一般默認(rèn)為最高級(jí)。
其他可以讓用戶緩存的頁(yè)面,區(qū)分目錄,根據(jù)不同的目錄,配置不同的max-age頭。
max-age啥用處?
用戶得到HTTP響應(yīng)頭后,會(huì)根據(jù)本地時(shí)間,加上max-age的時(shí)間,形成一個(gè)過期時(shí)間。例如,用戶本次時(shí)間為11:00,max-age設(shè)置為600,那么文件拿到后,過期時(shí)間為11:10分。也就是這個(gè)用戶,在11:10分以前,訪問這個(gè)文件,就會(huì)直接緩存命中,而不會(huì)對(duì)服務(wù)器發(fā)出請(qǐng)求。
所以,max-age的運(yùn)用就可以讓你的網(wǎng)站像那四大門戶一樣,大小減少到原來(lái)的10分之一,請(qǐng)求數(shù)也會(huì)短期內(nèi)得到巨大的減少。
如何設(shè)置Cache-Control?
如何設(shè)置百度娘之。
管理上的建議:
你不可能針對(duì)每個(gè)文件配置Cache-Control,所以,最好是先拆分域名,將不同應(yīng)用(文件類一個(gè)域名,圖片類一個(gè)域名等等)配置不同的緩存控制頭。
如果你的網(wǎng)站屬于大中型網(wǎng)站,如網(wǎng)頁(yè)訪問帶寬在100M以上的,可能針對(duì)域名配置不同緩存控制頭,已經(jīng)不能滿足你的需求了,這個(gè)時(shí)候,就可以管理好你的目錄。
將文件根據(jù)你們網(wǎng)站特點(diǎn)分到不同目錄,然后針對(duì)目錄,配置不同的緩存控制頭。
max-age設(shè)置多大?
以下提出的均為建議值,但是最適合你的,是你自己根據(jù)網(wǎng)站特點(diǎn)進(jìn)行的緩存時(shí)間配置。
首頁(yè),建議為900,也就是15分鐘。
文本類文件,建議為10800,也就是3小時(shí)。
圖片類文件,建議為86400,也就是24小時(shí)。
Swf類文件,建議為604800,也就是7天。
flv、exe類文件,建議為31536000,也就是1年。
作者:王康