参考资料

  1. Nginx日志记录配置指令详细说明以及案例
  2. nginx启动命令和停止命令
  3. 如何识别Nginx遇到攻击时如何快速响应?
  4. NginxuWSGI模块配置详细说明以及案例
  5. 如何配置Nginx用户认证?
  6. Nginxroot指令根目录配置详细说明以及案例
  7. 如何设置Nginx的SSL/TLS加密?
  8. nginx -e详细说明以及案例

Nginx expires、etag、if_modified_since:客户端缓存控制详细说明以及案例

Nginx 客户端缓存控制

1. expires

expires 指令用于设置响应头中的 ExpiresCache-Control,控制客户端缓存的时间。

语法:

expires [time|epoch|max|off];

案例:

location /static/ {
    expires 1d;  # 缓存1天
}
  • 1d 表示缓存1天。

  • max 表示缓存10年。

  • off 表示禁用缓存。

2. etag

etag 指令用于启用或禁用 ETag 响应头,用于标识资源的唯一性。

语法:

etag on|off;

案例:

location /static/ {
    etag on;  # 启用ETag
}
  • on 表示启用 ETag

  • off 表示禁用 ETag

3. if_modified_since

if_modified_since 指令用于控制 If-Modified-Since 请求头的处理方式。

语法:

if_modified_since off|exact|before;

案例:

location /static/ {
    if_modified_since exact;  # 精确匹配修改时间
}
  • off 表示忽略 If-Modified-Since 请求头。

  • exact 表示精确匹配修改时间。

  • before 表示如果修改时间早于请求头中的时间,则返回304。

综合案例

location /static/ {
    expires 1d;  # 缓存1天
    etag on;  # 启用ETag
    if_modified_since exact;  # 精确匹配修改时间
}
  • 该配置使 /static/ 目录下的资源缓存1天,启用 ETag,并精确匹配 If-Modified-Since 请求头。