1.浏览器缓存
静态资源缓存用expire
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 2d;
}
Response Header中添加了Expires和Cache-Control,
静态资源包括(一般缓存)
普通不变的图像,如logo,图标等
js、css静态文件
可下载的内容,媒体文件
协商缓存(add_header ETag/Last-Modified value)
HTML文件
经常替换的图片
经常修改的js、css文件
基本不变的API接口
不需要缓存
用户隐私等敏感数据
经常改变的api数据接口
2.代理层缓存
//缓存路径,inactive表示缓存的时间,到期之后将会把缓存清理
proxy_cache_path /data/cache/nginx/ levels=1:2 keys_zone=cache:512m inactive = 1d max_size=8g;
location / {
location ~ \.(htm|html)?$ {
proxy_cache cache;
proxy_cache_key $uri$is_args$args; //以此变量值做HASH,作为KEY
//HTTP响应首部可以看到X-Cache字段,内容可以有HIT,MISS,EXPIRES等等
add_header X-Cache $upstream_cache_status;
proxy_cache_valid 200 10m;
proxy_cache_valid any 1m;
proxy_pass http://real_server;
proxy_redirect off;
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /data/webapps/edc;
expires 3d;
add_header Static Nginx-Proxy;
}
}
在本地磁盘创建一个文件目录,根据设置,将请求的资源以K-V形式缓存在此目录当中,KEY需要自己定义(这里用的是url的hash值),同时可以根据需要指定某内容的缓存时长,比如状态码为200缓存10分钟,状态码为301,302的缓存5分钟,其他所有内容缓存1分钟等等。
可以通过purger的功能清理缓存。
AB测试/个性化需求时应禁用掉浏览器缓存。