温馨提示×

Nginx如何实现静态资源缓存

小樊
91
2025-05-04 05:45:47
栏目: 编程语言

Nginx可以通过配置文件来实现静态资源的缓存。以下是一些关键步骤和配置示例:

1. 配置缓存路径

首先,你需要指定一个目录来存储缓存文件。

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
  • levels=1:2:定义缓存目录的层级结构。
  • keys_zone=my_cache:10m:定义缓存区域的名称和大小。
  • max_size=1g:设置缓存的最大总大小。
  • inactive=60m:设置缓存文件在未被访问后多久被删除。
  • use_temp_path=off:关闭临时文件路径,直接使用指定的缓存目录。

2. 配置静态资源缓存

server块中配置静态资源的缓存规则。

server {
    listen 80;
    server_name example.com;

    location /static/ {
        alias /var/www/static/;
        expires 30d;
        add_header Cache-Control "public";
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }

    location / {
        proxy_pass http://backend_server;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}
  • location /static/:匹配静态资源请求。
  • alias /var/www/static/:指定静态资源的实际路径。
  • expires 30d:设置缓存过期时间为30天。
  • add_header Cache-Control "public":添加缓存控制头。
  • proxy_cache my_cache:启用缓存。
  • proxy_cache_valid 200 302 10m:设置200和302状态码的缓存时间为10分钟。
  • proxy_cache_valid 404 1m:设置404状态码的缓存时间为1分钟。

3. 配置动态内容缓存(可选)

如果你也想缓存动态内容,可以类似地配置。

location / {
    proxy_pass http://backend_server;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    add_header X-Proxy-Cache $upstream_cache_status;
}
  • add_header X-Proxy-Cache $upstream_cache_status;:添加一个自定义头部,显示缓存状态。

4. 清除缓存

你可以通过以下命令清除缓存:

nginx -s stop
rm -rf /var/cache/nginx/*
nginx -s start

或者使用Nginx的ngx_cache_purge模块:

purge_cache.sh "http://example.com/static/image.png";

其中purge_cache.sh是一个脚本,用于清除特定URL的缓存。

总结

通过上述配置,你可以有效地利用Nginx来缓存静态资源,提高网站的加载速度和性能。根据实际需求调整缓存策略和参数。

0