下面我们将介绍nginx文件缓存时间控制内容。
nginx缓存过期时间配置方法
1.expires指令
expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求
对于站点中不经常修改的静态内容(如图片,JS,CSS),
可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。
Expires是Web服务器响应消息头字段,
在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
location ~ \.(gif|jpg|jpeg|png|bmp|swf|ico)$ { root /var/www/img/; expires 300d; } location ~ .*\.(js|css)$ { expires 300d; }
2. nginx add_header Cache-Control指令 或 php header函数
add_header Cache-Control public, max-age=3600;
php代码: header("Cache-Control: max-age=180");// 失效时间、有效期2分钟
3.nginx的配置项 proxy_cache_valid指令
配置nginx cache中的缓存文件的缓存时间,如果配置项为:proxy_cache_valid 200 304 2m;
说明对于HTTP状态为200和304的缓存文件的缓存时间是2分钟,
两分钟之后再访问该缓存文件时,文件会过期,从而去源服务器重新取数据。
proxy_cache_valid 200 0s; //不缓存 缓存失效
4.nginx的配置参数:inactive
在proxy_cache_path配置项中进行配置,缓存在inactive指定的时间内如果不访问,将会从缓存中删除。文件过期。
nginx缓存优先级
(1)在同时设置了源服务器端Expires、源服务器端max-age和nginx cahe端的proxy_cache_valid的情况下,以源服务器端设置的Expires的值为标准进行缓存的过期处理
(2)若在nginx中配置了相关配置项,取消原服务器端Expires对缓存的影响,在同时设置了源服务器端max-age和nginx cahe端的proxy_cache_valid的情况下,以源服务器端max-age的值为标准进行缓存的过期处理
(3)若同时取消源服务器端Expires和源服务器端max-age对缓存的影响,则以proxy_cache_valid设置的值为标准进行缓存的过期处理
(4)inactive:在proxy_cache_path配置项中进行配置,说明某个缓存在inactive指定的时间内如果不访问,将会从缓存中删除。
(5)所以对缓存过期影响的优先级进行排序为:
inactvie>源服务器端Expires>源服务器端max-age>proxy_cache_valid
如:同时设置了: header("Cache-Control: max-age=1800");proxy_cache_valid 200 304 300d;
结果为: