??nginx下載安裝及使用
??nginx下載安裝
下載地址:點(diǎn)擊下載nginx
根據(jù)系統(tǒng)選擇要下載的安裝包,這里最好選擇穩(wěn)定版(stable version)。
下載好后解壓該zip,將解壓后的文件夾放在自己喜歡的目錄下,我是放在J盤(pán)(自己分的磁盤(pán))下。
進(jìn)入J:\nginx-1.22.0目錄,目錄結(jié)構(gòu):
注:project目錄是我自己創(chuàng)建的,用于存放打包之后的項(xiàng)目,本次我使用的hubuilderx創(chuàng)建的uniapp的H5項(xiàng)目,相關(guān)打包部署請(qǐng)參考:nginx部署uniapp的h5項(xiàng)目
??nginx啟動(dòng)
進(jìn)入J:\nginx-1.22.0目錄,打開(kāi)cmd輸入以下命令啟動(dòng)nginx。
start nginx
命令運(yùn)行時(shí)cmd窗口會(huì)閃一下,屬于正?,F(xiàn)象。也可以點(diǎn)擊nginx.exe應(yīng)用程序啟動(dòng)nginx。
nginx默認(rèn)配置(J:\nginx-1.22.0\conf下的nginx.conf文件):
可以看到默認(rèn)端口是80,默認(rèn)ip是本地,打開(kāi)瀏覽器輸入 http://localhost:80/ 訪問(wèn),出現(xiàn)以下頁(yè)面代表nginx啟動(dòng)成功。
nginx其他常用命令:
// 查看幫助信息
nginx -h
// 查看nginx版本(小寫(xiě)v)
nginx -v
// 查看nginx版本及配置參數(shù)信息(大寫(xiě)V)
nginx -V
// 指定配置文件啟動(dòng)nginx(xxx表示配置文件路徑)
start nginx -c xxx
// 測(cè)試配置文件是否正確(xxx表示配置文件路徑)
nginx -t -c xxx
// 完整有序的停止nginx,保存相關(guān)信息
nginx -s quit
// 完整有序的停止nginx,保存相關(guān)信息
nginx -s stop
// 重啟nginx
nginx -s reload
可自行運(yùn)行命令看看。
??nginx配置緩存
??強(qiáng)緩存、協(xié)商緩存、無(wú)緩存區(qū)別
強(qiáng)緩存:瀏覽器不與服務(wù)端協(xié)商直接取瀏覽器緩存
協(xié)商緩存:瀏覽器會(huì)先向服務(wù)器確認(rèn)資源的有效性后才決定是從緩存中取資源還是重新獲取資源
無(wú)緩存:瀏覽器直接向服務(wù)器重新獲取資源
三種緩存機(jī)制皆通過(guò)配置http頭(add_header)的Cache-Control來(lái)實(shí)現(xiàn)。強(qiáng)緩存還可以使用Expires字段實(shí)現(xiàn)。
Cache-Control字段枚舉值:
值 | 描述 |
---|---|
no-store | 禁止緩存(強(qiáng)緩存和協(xié)商緩存),客戶端不存儲(chǔ)任何值 |
no-cache | 禁止強(qiáng)緩存,需要重寫(xiě)驗(yàn)證(可以理解為 禁止強(qiáng)緩存,啟用協(xié)商緩存) |
private | 私有緩存,禁止中間人(比如CDN等代理緩存) |
public | 共享緩存,允許中間人緩存 |
max-age | 資源可以被緩存的最大時(shí)間,單位:秒,是一個(gè)相對(duì)時(shí)間,優(yōu)先級(jí)高于 Expires |
s-maxage | 用于共享緩存,單位:秒,如果在其有效期內(nèi),不去訪問(wèn)CDN等。s-maxage會(huì)覆蓋 max-age 和 Expires |
must-revalidate | 緩存使用陳舊資源時(shí),必需先驗(yàn)證狀態(tài) |
??強(qiáng)緩存配置
Expires:response header里的過(guò)期時(shí)間,瀏覽器再次加載資源時(shí),如果在這個(gè)過(guò)期時(shí)間內(nèi),則命中強(qiáng)緩存(http1.0的產(chǎn)物,現(xiàn)在一般用cache-control)。
它是一個(gè)時(shí)間戳,當(dāng)客戶端再次請(qǐng)求該資源的時(shí)候,會(huì)把客戶端時(shí)間與該時(shí)間戳進(jìn)行對(duì)比,如果大于該時(shí)間戳則已過(guò)期,否則直接使用該緩存資源。
但是,有個(gè)大問(wèn)題,發(fā)送請(qǐng)求時(shí)是使用的客戶端時(shí)間去對(duì)比。一是客戶端和服務(wù)端時(shí)間可能快慢不一致,另一方面是客戶端的時(shí)間是可以自行修改的(比如瀏覽器是跟隨系統(tǒng)時(shí)間的,修改系統(tǒng)時(shí)間會(huì)影響到),所以不一定滿足預(yù)期。
Cache-Control:cache-control使用max-age控制強(qiáng)緩存時(shí)間。當(dāng)值設(shè)為max-age=300時(shí),則代表在這個(gè)請(qǐng)求正確返回時(shí)間(瀏覽器也會(huì)記錄下來(lái))的5分鐘內(nèi)再次加載資源,就會(huì)命中強(qiáng)緩存。
cache-control的優(yōu)先級(jí)高于expires,expires是http1.0的產(chǎn)物,而cache-control是http1.1的產(chǎn)物,兩者同時(shí)存在的時(shí)候expire會(huì)被cache-control的max-age覆蓋,在不支持http1.1的情況下可能就需要expires來(lái)保持兼容。
修改nginx.conf文件:
重啟nginx后,刷新項(xiàng)目頁(yè)面,查看項(xiàng)目網(wǎng)絡(luò)請(qǐng)求:
可以看到響應(yīng)頭帶有max-age=300,代表設(shè)置成功,瀏覽器直接從內(nèi)存和磁盤(pán)中取資源,五分鐘后緩存失效。請(qǐng)謹(jǐn)慎使用強(qiáng)緩存。
??協(xié)商緩存配置
協(xié)商緩存主要依賴的響應(yīng)頭包括Last-Modified和ETag,需要和服務(wù)器交互,請(qǐng)求資源命中協(xié)商緩存后,返回的狀態(tài)碼為 304,所以304狀態(tài)碼不應(yīng)該認(rèn)為是一種錯(cuò)誤,而是對(duì)客戶端有緩存情況下服務(wù)端的一種響應(yīng)。
Last-Modified:記錄資源最后修改的時(shí)間。
ETag:基于資源的內(nèi)容編碼生成一串唯一的標(biāo)識(shí)字符串, 只要內(nèi)容不同, 就會(huì)生成不同的ETag。
但Last-Modified有以下兩個(gè)缺點(diǎn):
?? 只要編輯了,不管內(nèi)容是否真的有改變,都會(huì)以這最后修改的時(shí)間作為判斷依據(jù),當(dāng)成新資源返回,從而導(dǎo)致了沒(méi)必要的請(qǐng)求相應(yīng),而這正是緩存本來(lái)的作用即避免沒(méi)必要的請(qǐng)求。
?? 時(shí)間的精確度只能到秒,如果在一秒內(nèi)的修改是檢測(cè)不到更新的,仍會(huì)告知瀏覽器使用舊的緩存。
ETag的出現(xiàn)就是為了解決last-modified的上述問(wèn)題。
修改nginx.conf文件:
重啟nginx后,刷新項(xiàng)目頁(yè)面,查看項(xiàng)目網(wǎng)絡(luò)請(qǐng)求:
此后每次刷新頁(yè)面,都會(huì)與服務(wù)器確認(rèn)資源是否更新,如果更新服務(wù)器則會(huì)返回新的資源,如果未更新則告訴瀏覽器啟用緩存。
??無(wú)緩存配置
修改nginx.conf文件:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-709114.html
重啟nginx后,刷新項(xiàng)目頁(yè)面,查看項(xiàng)目網(wǎng)絡(luò)請(qǐng)求:
每次刷新頁(yè)面,請(qǐng)求狀態(tài)碼都是200,真正從服務(wù)器獲取資源,繞開(kāi)所有緩存,但會(huì)增加網(wǎng)絡(luò)帶寬消耗,影響項(xiàng)目性能,謹(jǐn)慎使用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-709114.html
到了這里,關(guān)于nginx配置瀏覽器緩存(強(qiáng)緩存、協(xié)商緩存、無(wú)緩存)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!