nginx緩存靜態(tài)資源,只需幾個(gè)配置提升10倍頁面加載速度

admin Nginx評(píng)論792字?jǐn)?shù) 1602閱讀模式

首先我們看圖說話
這是在沒有緩存的情況下,這個(gè)頁面發(fā)送了很多靜態(tài)資源的請(qǐng)求:
nginx緩存靜態(tài)資源,只需幾個(gè)配置提升10倍頁面加載速度
可以看到,靜態(tài)資源占用了整個(gè)頁面加載用時(shí)的90%以上,而且這個(gè)靜態(tài)資源還是已經(jīng)在我使用了nginx配置壓縮以后的大小,如果沒有對(duì)這些靜態(tài)資源壓縮的話,那么靜態(tài)資源加載應(yīng)該會(huì)占用這個(gè)頁面展示99%以上的時(shí)間。聽起來是不是已經(jīng)被嚇到了,但是數(shù)據(jù)已經(jīng)擺在這里了,這可不是危言聳聽。
然后再看看使用了nginx緩存之后的效果圖:
nginx緩存靜態(tài)資源,只需幾個(gè)配置提升10倍頁面加載速度
看到?jīng)]有,朋友們,整個(gè)頁面只有請(qǐng)求接口的時(shí)間和從本地磁盤加載css的時(shí)間。頁面加載速度直接提升10倍以上!并且由于我這個(gè)頁面沒有采用前后端分離的方式,所以html沒有緩存下來,如果采用了前后端分離架構(gòu)的話,就連html都可以直接緩存,那提升的速度可想而知。當(dāng)然由于瀏覽器或者手機(jī)端對(duì)頁面加載的優(yōu)化我們并不能很直觀的感受到10倍的提升,實(shí)際上以肉眼觀察的話,差不多減少了一半的時(shí)間,并且由于并沒有向后端服務(wù)器請(qǐng)求這些靜態(tài)資源,也相當(dāng)于對(duì)后端服務(wù)器做了一層保護(hù)措施。

首先在http模塊加配置:

# 開啟gzip
gzip  on;
# 啟用gzip壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮
gzip_min_length 1k;
# gzip 壓縮級(jí)別,1-10,數(shù)字越大壓縮的越好,也越占用CPU時(shí)間。一般設(shè)置1和2
gzip_comp_level 2;
# 進(jìn)行壓縮的文件類型。javascript有多種形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 是否在http header中添加Vary: Accept-Encoding,建議開啟
gzip_vary on;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";
# 設(shè)置緩存路徑并且使用一塊最大100M的共享內(nèi)存,用于硬盤上的文件索引,包括文件名和請(qǐng)求次數(shù),每個(gè)文件在1天內(nèi)若不活躍(無請(qǐng)求)則從硬盤上淘汰,硬盤緩存最大10G,滿了則根據(jù)LRU算法自動(dòng)清除緩存。
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;

關(guān)于模塊以及nginx配置信息在上一篇文章有說明。

可以看到在http模塊中主要是使用gzip壓縮,最后一個(gè)配置才是和緩存有關(guān)的配置。

然后是server中加上location配置

location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
 log_not_found off;
 # 關(guān)閉日志
 access_log off;
 # 緩存時(shí)間7天
 expires 7d;
 # 源服務(wù)器
 proxy_pass http://localhost:8888;
 # 指定上面設(shè)置的緩存區(qū)域
 proxy_cache imgcache;
 # 緩存過期管理
 proxy_cache_valid 200 302 1d;
 proxy_cache_valid 404 10m;
 proxy_cache_valid any 1h;
 proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
 }

加上這兩塊配置之后,就能享受到緩存給你帶來的快樂了。當(dāng)然系統(tǒng)優(yōu)化之路還是相當(dāng)漫長(zhǎng)的,nginx緩存只是其中的一塊而已,想要把系統(tǒng)達(dá)到完美還需要在很多地方下功夫,比如這些靜態(tài)資源完全可以直接在客戶端緩存,這樣連請(qǐng)求都不會(huì)往服務(wù)端發(fā)了,更大的減輕服務(wù)器的壓力。

版權(quán)聲明:文章圖片資源來源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)留言刪除!!!
廣告也精彩
admin
  • 本文由 發(fā)表于 2023年2月19日 20:49:39
  • 轉(zhuǎn)載請(qǐng)務(wù)必保留本文鏈接:http://yudch.cn/10157.html
匿名

發(fā)表評(píng)論

匿名網(wǎng)友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: