使用场景:
项目的页面需要加载很多数据,也不是经常变化的,不涉及个性化定制,为每次请求去动态生成数据,性能比不上根据请求路由和参数缓存一下结果,使用nginx缓存将大幅度提升请求速度。
只需要配置proxy_cache_path和proxy_cache就可以开启内容缓存,前者用来设置缓存的路径和配置,后者用来启用缓存。
proxy_cache_path/path/to/cachelevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;
proxy_passhttp://localhost:8000;
}
对应参数说明:
1.用于缓存的本地磁盘目录是/path/to/cache/
2.levels在/path/to/cache/设置了一个两级层次结构的目录。将大量的文件放置在单个目录中会导致文件访问缓慢,所以针对大多数部署,我们推荐使用两级目录层次结构。如果levels参数没有配置,则nginx会将所有的文件放到同一个目录中。
3.keys_zone设置一个共享内存区,该内存区用于存储缓存键和元数据,有些类似计时器的用途。将键的拷贝放入内存可以使nginx在不检索磁盘的情况下快速决定一个请求是hit还是miss,这样大大提高了检索速度。一个1mb的内存空间可以存储大约8000个key,那么上面配置的10mb内存空间可以存储差不多80000个key。
4.max_size设置了缓存的上限(在上面的例子中是10g)。这是一个可选项;如果不指定具体值,那就是允许缓存不断增长,占用所有可用的磁盘空间。当缓存达到这个上线,处理器便调用cachemanager来移除最近最少被使用的文件,这样把缓存的空间降低至这个限制之下。
5.inactive指定了项目在不被访问的情况下能够在内存中保持的时间。在上面的例子中,如果一个文件在60分钟之内没有被请求,则缓存管理将会自动将其在内存中删除,不管该文件是否过期。该参数默认值为10分钟(10m)。注意,非活动内容有别于过期内容。nginx不会自动删除由缓存控制头部指定的过期内容(本例中cache-control:max-age=120)。过期内容只有在inactive指定时间内没有被访问的情况下才会被删除。如果过期内容被访问了,那么nginx就会将其从原服务器上刷新,并更新对应的inactive计时器。
6.nginx最初会将注定写入缓存的文件先放入一个临时存储区域,use_temp_path=off命令指示nginx将在缓存这些文件时将它们写入同一个目录下。我们强烈建议你将参数设置为off来避免在文件系统中不必要的数据拷贝。use_temp_path在nginx1.7版本和nginxplusr6中有所介绍。
最终,proxy_cache命令启动缓存那些url与location部分匹配的内容(本例中,为/)。你同样可以将proxy_cache命令添加到server部分,这将会将缓存应用到所有的那些location中未指定自己的proxy_cache命令的服务中。
nginx缓存相关进程
缓存中还涉及两个额外的nginx进程:
cachemanager周期性地启动,检查高速缓存的状态。如果高速缓存大小超过proxy_cache_path中max_size参数设置的限制,则高速缓存管理器将删除最近访问过的数据。在两次缓存管理器启动的间隔,缓存的数据量可能短暂超过配置的大小。

loader_threshold-迭代持续时间,以毫秒为单位(默认情况下200)
loader_files-一次迭代期间加载的最大项目数(默认情况下100)
loader_sleeps-迭代之间的延迟,以毫秒为单位(默认情况下50)
在以下示例中,迭代持续数300毫秒或直到200个项目被加载进去:
proxy_cache_path/data/nginx/cachekeys_zone=one:10mloader_threshold=300loader_files=200;
其他常用参数
proxy_cache_path/path/to/cachelevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;
#proxy_cache_key"$host$request_uri$cookie_user";proxy_cache_min_uses3;
proxy_cache_methodsgetheadpost;
proxy_cache_valid20030210m;
#proxy_cache_validany5m;proxy_passhttp://localhost:8000;
map$request_method$purge_method{
}
2.在location{}块中,已经配置缓存的前提下,引入proxy_cache_purge参数来指定清除缓存请求的条件。例如在上一步指定的$request_method
server_namewww.example.com;
proxy_passhttps://localhost:8002;
proxy_cache_purge$purge_method;
}
以上就是Nginx内容缓存怎么配置及常见参数配置有哪些的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--nginx缓存原理及配置
本文地址:https://www.idcbaba.com/guowai/5208.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



