什么是缓存?在NGINX中如何配置缓存以提升性能?

大家好,我是锋哥。今天分享关于【什么是缓存?在NGINX中如何配置缓存以提升性能?】**面试题。**希望对大家有帮助;

什么是缓存?在NGINX中如何配置缓存以提升性能?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

缓存(Cache)是指将频繁访问的数据临时存储在一个容易访问的地方(通常是内存),以减少对原始数据源(如数据库、远程服务器等)的访问次数,从而提高数据读取速度和系统的响应性能。

在NGINX中,缓存机制可以帮助减少后端服务器的负载,提升系统的吞吐量和响应速度。NGINX提供了多种缓存方式,常见的有反向代理缓存和静态文件缓存。

NGINX中配置缓存以提升性能

  1. 启用反向代理缓存

    NGINX常用作反向代理服务器,可以将请求转发给后端应用(如PHP、Node.js等),并缓存其响应内容。配置反向代理缓存可以减少对后端服务器的请求次数,提升性能。

    步骤

    • nginx.conf文件中配置反向代理缓存。

      http {
      # 设置缓存路径和大小
      proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=example_cache:10m max_size=1g inactive=60m use_temp_path=off;

      复制代码
        server {
            listen 80;
            server_name example.com;
      
            location / {
                # 启用缓存
                proxy_cache example_cache;
                proxy_cache_valid 200 1h;  # 设置缓存过期时间
                proxy_cache_use_stale error timeout updating;  # 错误时使用过期的缓存
                proxy_pass http://backend;  # 将请求转发到后端
            }
        }

      }

    配置说明

    • proxy_cache_path:设置缓存存储路径(/var/cache/nginx),keys_zone为缓存区域的名称和大小,max_size为缓存的最大容量。
    • proxy_cache:指定缓存区域名称。
    • proxy_cache_valid:设置缓存的有效时间,这里是200 OK响应的缓存有效期为1小时。
    • proxy_cache_use_stale:当缓存过期时,遇到错误或超时可以使用过期缓存,避免返回错误页面。
  2. 缓存静态资源

    对于静态资源(如图片、CSS、JavaScript等),通常可以直接缓存,而不需要通过后端服务器。NGINX可以直接缓存这些资源,以减少对磁盘和网络的IO压力。

    配置示例

    复制代码
    server {
        listen 80;
        server_name example.com;
    
        location /static/ {
            root /var/www/example.com;
            expires 30d;  # 设置缓存过期时间为30天
            add_header Cache-Control "public, max-age=2592000";  # 设置Cache-Control头部
        }
    }

    配置说明

    • expires:设置静态资源的缓存过期时间,30天后过期。
    • add_header Cache-Control:设置HTTP缓存控制头部,标记为public表示可以被浏览器缓存。
  3. 启用动态页面缓存(FastCGI缓存)

    如果你在NGINX中使用了动态内容生成(例如PHP、Python等后端处理),可以缓存生成的HTML内容来减少每次请求时的处理时间。NGINX可以缓存这些动态页面,提升性能。

    配置示例

    复制代码
    http {
        fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fastcgi_cache:10m inactive=60m;
        server {
            listen 80;
            server_name example.com;
    
            location ~ \.php$ {
                fastcgi_pass backend;
                fastcgi_param SCRIPT_FILENAME /var/www/example.com$fastcgi_script_name;
                fastcgi_cache fastcgi_cache;
                fastcgi_cache_valid 200 1h;
                fastcgi_cache_use_stale error timeout updating;
            }
        }
    }

    配置说明

    • fastcgi_cache_path:指定缓存存储路径。
    • fastcgi_cache:启用FastCGI缓存。
    • fastcgi_cache_valid:设置缓存的有效时间,这里设置200 OK响应为1小时。

常见缓存配置项说明:

  • proxy_cache_path:设置反向代理缓存的存储路径、大小和过期规则。
  • proxy_cache:指定反向代理缓存区域。
  • proxy_cache_valid:指定缓存内容的有效时间。
  • expires:设置静态资源的缓存过期时间。
  • Cache-Control:设置缓存的控制头部,指定缓存策略。
  • fastcgi_cache_path:指定FastCGI缓存路径和过期规则。

通过配置这些缓存策略,NGINX能够显著减少后端服务器的负担,加速资源的访问,进而提升网站或应用的性能。

如果你有具体的缓存需求或问题,可以进一步提供详细信息,我可以帮助你调整配置。

相关推荐
敲代码的嘎仔34 分钟前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
程序猿乐锅3 小时前
【黑马点评 | 第一篇】从 Session 到 Redis+Token 的改造与拦截器实现
数据库·redis·缓存
野生技术架构师3 小时前
Redis Hot Key 与 Big Key:危害、发现与解决方案
数据库·redis·缓存
零依赖极客4 小时前
Day 9·1 KV 也量化——q8 KV 把缓存与 decode 带宽压到一半
c语言·开发语言·arm开发·人工智能·缓存·矩阵
敲代码的嘎仔4 小时前
互动问答系统实战:两级评论模型、ES 搜索集成、Caffeine 多级缓存全记录
java·开发语言·数据库·elasticsearch·缓存·mybatis·高并发
vortex55 小时前
AI 提示词缓存命中机制解析
人工智能·缓存
huang5791475 小时前
从缓存行角度优化链表遍历:批处理与预取策略
数据结构·链表·缓存
玄芯散人19 小时前
【筑基·047】内存Hierarchy:寄存器到硬盘的速度差
缓存·内存·计算机基础
xhbh66621 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
Wang's Blog1 天前
Java框架快速入门: Spring Security+OAuth2之多因子认证缓存服务
java·spring·缓存