對于網(wǎng)站的靜態(tài)文件 如css ?js或者靜態(tài)圖片這些不會經(jīng)常更新的數(shù)據(jù)我們通常緩存在客戶端 ?每次當(dāng)客戶端訪問的時候從客戶端下載文件 減少了與服務(wù)器的交互 ?加快用戶的訪問速度 柔袁, 下面介紹nginx的緩存機(jī)制proxy_cache
先在火狐瀏覽器安裝firebug ?和Yslow插件 ?打開firebug和要訪問的頁面 ?Yslow ?runtest
我們看這些靜態(tài)文件expires的狀態(tài)都是no expires沒有緩存的 我們?nèi)バ薷膎ginx的配置文件 ?使其緩存到客戶端
首先添加緩存的臨時文件 ? 這個指令配置緩存數(shù)據(jù)的存放路徑 ?只能放在http塊中
proxy_cache_path /usr/local/wcloud_ngx/cache/static levels=1 keys_zone=static:10m;? #keys_zone是給路徑取的別名 ?在配置文件中使用
然后去配置反向代理的文件添加相關(guān)指令
server {
? ? listen? ? 80;
? ?server_name www.*****.com; ? ?#域名
? ?proxy_buffering on; ? ? ? ? ? ? ? ? #開啟緩沖,proxy_cache是依賴于緩沖的
? ?proxy_buffers 8 8k; ? ? ? ? ? ? ? ? #緩沖的大小
? ?proxy_buffer_size 8k; ? ? ? ? ? ??
? ?proxy_busy_buffers_size 16k;
? ? proxy_temp_path /usr/local/wcloud_ngx/buffer_temp; ? #緩沖路徑 ?存放代理服務(wù)器大體積響應(yīng)數(shù)據(jù)?
? ? proxy_temp_file_write_size 16k;
? ?gzip on;
? #gzip_types text/plain text/html application/x-javascript text/css application/xml;
? ?gzip_vary on;
? ?location / {
? ? ? ? proxy_cache static; ? ? ? ? ? ? ?#存放緩存索引區(qū)域名稱
? ? ? ? proxy_cache_key $scheme$proxy_host$uri$is_args$args; ? #緩存建立索引關(guān)鍵字 默認(rèn)
? ? ? ? expires 1d; ? ? ? ? ? ? ? ? ? ? ? ? ?#客戶端緩存時間 ?1天
? ? ? ? proxy_set_header Host $http_host;
? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? proxy_pass http://127.0.0.1:3000; ? ? #反向代理
}
}
配置完成之后 ?-t檢測配置文件的正確性 ?然后重啟nginx服務(wù)
然后再次訪問網(wǎng)站 ?使用Yslow查看
我們發(fā)現(xiàn)都有了緩存時間 ?然后可以使用firebug的網(wǎng)絡(luò)比較一下前后的訪問速度 ?當(dāng)然Yslow還提供了一些關(guān)于靜態(tài)文件的優(yōu)化建議
當(dāng)然nginx還有很多的緩存方式 ?如squid ncache(新浪)
當(dāng)然還有要注意的就是如果你的網(wǎng)站里面有驗證碼,雖然從后臺取出的是base64位的數(shù)據(jù)展現(xiàn)在前臺也是靜態(tài)圖片 ?也會被緩存下來 ?第二次刷新之后驗證碼圖片是不回變的