nginx缓存原理及配置

nginx缓存原理及配置

浏览次数:
信息来源: 用户投稿
更新日期: 2026-05-12
文章简介

使用场景:项目的页面需要加载很多数据,也不是经常变化的,不涉及个性化定制,为每次请求去动态生成数据,性能比不上根据请求路由和参数缓存一下结果,使用nginx缓存将大幅度提升请求速度。只需要配置p

2025阿里云双十一服务器活动

使用场景:

项目的页面需要加载很多数据,也不是经常变化的,不涉及个性化定制,为每次请求去动态生成数据,性能比不上根据请求路由和参数缓存一下结果,使用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参数设置的限制,则高速缓存管理器将删除最近访问过的数据。在两次缓存管理器启动的间隔,缓存的数据量可能短暂超过配置的大小。

  • nginx缓存原理及配置

    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内容缓存怎么配置及常见参数配置有哪些的详细内容,更多请关注主机测评网其它相关文章!

    标签:
    专用服务器与云托管该怎么选择(云服务器托管平台)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!