浏览器缓存:静态资源缓存到浏览器,可以在Nginx中设置客户端浏览器静态资源的缓存时间,也可以禁止客户端浏览器使用缓存
浏览器的响应状态码为304,表示使用的是浏览器缓存,当Nginx判断请求的静态资源没有被更新(根据静态资源的更新时间判断),就会让浏览器使用缓存的数据,如果资源被更新了,就会返回最新的资源给浏览器
可以通过expires设置静态资源在浏览器的缓存时间
location /image {
root /usr/local/nginx/html/static/imooc;
expires 10s;
}
expires [time]:设置浏览器资源的缓存时间,expires 10s 表示资源在浏览器缓存10s
expires @[time]:设置浏览器资源缓存的到期时间,expires @22h30m 表示资源在当天的22时30分到期,如果已经过了22h30m,就是第二天的22h30m到期
expires -[time]:表示缓存提前到期,用于清除缓存
expires epoch:不在浏览器缓存资源
expires off:Nginx不对浏览器缓存进行设置,使用浏览器的默认缓存设置
expires max:设置最大的缓存时间,资源的到期时间会非常大,可以认为浏览器缓存的资源永不过期
Nginx缓存:上游服务器静态资源缓存到nginx,比如有一台tomcat静态资源服务器,在Nginx中设置了缓存之后,会把从tomcat静态资源服务器请求到的静态资源缓存到Nginx,并且可以设置静态资源的缓存时间
upstream webs {
server 192.168.48.130:8080;
}
# proxy_cache_path 设置缓存目录
# keys_zone 设置共享内存,dev_cache是共享内存的名字,10m是共享内存的大小
# max_size 设置缓存的最大大小
# inactive 设置文件的过期时间,超过此时间就会被清理
# use_temp_path 设置是否使用临时目录,使用会影响Nginx性能
proxy_cache_path /usr/local/nginx/cache keys_zone=dev_cache:10m max_size=1g inactive=8h use_temp_path=off;
server {
listen 88;
server_name shuguangtj.mukewang.com;
location / {
proxy_pass http://webs;
# 启用缓存,名字跟keys_zone设置的名字一致
proxy_cache dev_cache;
# 针对200和304状态码的资源进去缓存,缓存时间为8小时
proxy_cache_valid 200 304 8h;
}
}