对于网站的静态文件 如css js或者静态图片这些不会经常更新的数据我们通常缓存在客户端 每次当客户端访问的时候从客户端下载文件 减少了与服务器的交互 加快用户的访问速度 , 下面介绍nginx的缓存机制proxy_cache
先在火狐浏览器安装firebug 和Yslow插件 打开firebug和要访问的页面 Yslow runtest
我们看这些静态文件expires的状态都是no expires没有缓存的 我们去修改nginx的配置文件 使其缓存到客户端
首先添加缓存的临时文件 这个指令配置缓存数据的存放路径 只能放在http块中
proxy_cache_path /usr/local/wcloud_ngx/cache/static levels=1 keys_zone=static:10m; #keys_zone是给路径取的别名 在配置文件中使用
然后去配置反向代理的文件添加相关指令
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; #缓冲路径 存放代理服务器大体积响应数据
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; #存放缓存索引区域名称
proxy_cache_key $scheme$proxy_host$uri$is_args$args; #缓存建立索引关键字 默认
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服务
然后再次访问网站 使用Yslow查看
我们发现都有了缓存时间 然后可以使用firebug的网络比较一下前后的访问速度 当然Yslow还提供了一些关于静态文件的优化建议
当然nginx还有很多的缓存方式 如squid ncache(新浪)
当然还有要注意的就是如果你的网站里面有验证码,虽然从后台取出的是base64位的数据展现在前台也是静态图片 也会被缓存下来 第二次刷新之后验证码图片是不回变的