如果有人问你怎么优化网站,那么你一定要告诉他使用缓存,nginx有着简单方便的缓存机制。
存放放在哪?
nginx不会自动为我们创建缓存目录,我们需要手动创建缓存目录。我们可以把缓存路径指向任何我们习惯使用的位置,我们只需要在http中设置:
proxy_cache_path cache_path keys_zone=cache_name:file_size max_size=size_num inactive=destory_time levels=1:n;
cache_path #缓存的路径
cache_name #缓存的名称
file_size #内存中缓存内容元数据信息大小限制
size_num #缓存总大小限制
destory_time #在指定时间内没人访问则被删除
1:n #设置缓存文件目录层次;levels=1:n 表示n级目录
什么时候缓存?
Nginx默认会缓存所有get和head方法的请求结果,缓存的key默认使用请求字符串,使用缓存的时候我们只需要指定缓存场景:
proxy_cache cache_name|off
#cache_name proxy_cache_path中设置的keys_zone
#off 关闭缓存
#proxy_cache 可以放在server或者location下
proxy_cache_methods METHOD
#指定哪些方法的请求被缓存
proxy_cache_min_uses n
#指定请求至少被发送了多少次以上时才缓存,可以防止低频请求被缓存#
缓存多久?
我们已经设置好了缓存路径,也知道了在哪里怎么触发缓存,对于不同的文件,往往有着不同的缓存需求,我们只需要设置:
proxy_cache_valid status_code time
#200 302 10m; 200和302的响应状态码缓存时间为10分钟
#any 5m; 对应任何状态码,5分钟有效
缓存特例?
有的时候有一些文件我们不想缓存,这个时候我们只需要设置:
proxy_cache_bypass url_path
#url_path 这时url_path网址访问的文件就不会缓存了
网友评论