Nginx expires缓存

本文详细介绍了如何使用Nginx进行缓存配置,特别是针对网站图片等静态资源的长期缓存策略。通过设置Expires指令,可以有效地减轻服务器负担,并提高用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:http://blog.youkuaiyun.com/baochao95/article/details/72848581

---------1213更新--------

expires直译是期满,如果你办签证的话,签证页会有expires一项,表示该签证到期时间,可以参照加深理解。


-------------------------------

expires缓存

对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存。可以, 用到 nginx的expires设置 。nginx中设置过期时间,非常简单。在location或if段里,来写。

设置格式

expires 30s;#30秒
expires 30m;#30分钟
expires 2h;#2个小时
expires 30d;#30天
 
  • 1
  • 2
  • 3
  • 4

注意点

服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效。

备注

304 也是一种很好的缓存手段
原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since
浏览器知道内容无改变,于是直接调用本地缓存.
这个过程,也请求了服务器,但是传着的内容极少.
对于变化周期较短的,如静态html,js,css,比较适于用这个方式

设置缓存案例

修改nginx的conf文件,比如设置图片缓存。

http{
    ...
    server {
        listen 80;
        server_name test.com

        location ~* \.(jpg|jpeg|gif|bmp|png){
            expires 1d;#缓存1天
        }

    }
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

第一次访问网站中的图片

这里写图片描述

这里可以看到Cache-Control的内容是86400,这正好是1天的秒数,还有一个就是Expires的内容正好是一天后的请求时间。

第二次访问网站中的图片

我重新在火狐浏览器中测试了,第二次请求后并没有发现有请求,表示了我们的图片被浏览器缓存了。

这里写图片描述

<think>我们正在处理关于如何清除Nginx缓存的问题。根据用户的问题,我们需要提供清除Nginx缓存的方法。 根据引用[1]的内容,我们可以使用一个shell脚本来清除Nginx缓存。该脚本首先删除Nginx缓存目录下的所有内容,然后重新加载Nginx配置。 另外,引用[3]提到,有时可能需要更细粒度的缓存控制,比如使用X-Accel-Expires头,但用户的问题是关于清除整个缓存,所以我们主要关注如何清除整个缓存目录。 步骤: 1. 确定Nginx缓存目录的位置(通常配置在nginx.conf中,例如/var/cache/nginx)。 2. 删除该目录下的所有文件(注意:需要sudo权限)。 3. 重新加载Nginx以使更改生效。 我们将提供一个示例脚本,并解释每一步的作用。 同时,我们也要注意,清除缓存可能需要根据不同的Nginx配置进行调整。 另外,引用[2]和[4]提到了其他配置(如HTTPS、HTTP头等),但用户的问题是关于清除缓存,所以我们不展开这些内容。 根据引用[5],我们还应该注意安全配置,但同样,这不是当前问题的重点。 因此,我们提供以下方法: 方法1:手动清除缓存 步骤: 1. 删除缓存目录:sudo rm -rf /var/cache/nginx/* 2. 重新加载Nginx:sudo nginx -s reload 或者使用系统服务命令(如sudo systemctl reload nginx) 方法2:使用脚本(如引用[1]所示) 我们将编写一个脚本,并说明如何设置定时任务(如果用户需要定时清除缓存的话)。 注意:在执行删除操作前,请确认缓存目录是否正确,以免误删其他文件。 下面我们提供详细步骤。</think>### 清除Nginx缓存的方法 清除Nginx缓存主要有两种方式,具体操作取决于您的缓存配置方式: #### 1. **手动清除文件缓存(推荐)** ```bash # 删除缓存目录所有内容(需sudo权限) sudo rm -rf /var/cache/nginx/* # 重新加载Nginx使配置生效 sudo systemctl reload nginx # 或 sudo nginx -s reload ``` **说明**: - 缓存路径 `/var/cache/nginx` 需与 `nginx.conf` 中 `proxy_cache_path` 配置一致 - 操作后立即生效,适用于所有缓存配置类型[^1] #### 2. **通过Purge模块清除(需安装ngx_cache_purge)** ```nginx location ~ /purge(/.*) { proxy_cache_purge YOUR_CACHE_NAME $1$is_args$args; } ``` **操作方式**: ```bash curl -X PURGE http://yourdomain.com/purge/url-to-purge ``` **要求**: - 需编译安装 `ngx_cache_purge` 模块 - 需在配置中预定义缓存区域名称[^3] --- ### 配置建议 在 `nginx.conf` 中添加基础缓存配置: ```nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { location / { proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; # 添加清除指令(可选) proxy_cache_purge PURGE from $arg_purge_token; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值