nginx http 缓存和超时配置
缓存和超时是什么
什么是 nginx http 缓存
Nginx HTTP 缓存是一种机制,用于临时存储客户端请求的静态资源(如图片、CSS、JavaScript 文件等),以提高服务器的响应速度和减少带宽消耗。缓存可以显著提高用户体验,因为用户可以更快地获取到资源,同时也减轻了服务器的负载。 Nginx HTTP 缓存分为两种主要类型:
- 客户端缓存(Browser Cache):
- 客户端缓存是指资源被存储在用户的浏览器或本地设备上。当用户首次请求一个资源时,服务器会发送该资源,并附带一些 HTTP 头信息,如
Cache-Control
和Expires
,这些头信息告诉浏览器资源可以缓存多长时间。在缓存有效期内,浏览器会直接从本地缓存中获取资源,而无需再次向服务器发送请求。
- 客户端缓存是指资源被存储在用户的浏览器或本地设备上。当用户首次请求一个资源时,服务器会发送该资源,并附带一些 HTTP 头信息,如
- 服务器端缓存(Server Cache):
- 服务器端缓存是指资源被存储在 Nginx 服务器上。这通常通过 Nginx 的
proxy_cache
模块实现。当客户端请求一个资源时,如果 Nginx 服务器上已经有缓存的副本,它将直接将缓存的资源发送给客户端,而不是向原始服务器请求资源。这可以显著减少服务器的响应时间和负载。 服务器端缓存的关键配置指令包括:
- 服务器端缓存是指资源被存储在 Nginx 服务器上。这通常通过 Nginx 的
proxy_cache_path
: 设置缓存数据的存储路径和其他参数。proxy_cache
: 指定要使用的缓存区域。proxy_cache_key
: 定义如何生成缓存键。proxy_cache_valid
: 设置不同 HTTP 状态码的缓存时间。 客户端缓存的配置通常在服务器响应中通过 HTTP 头信息进行控制,例如:Cache-Control
: 指定缓存的行为和最大有效时间。Expires
: 指定资源的过期时间。Etag
和Last-Modified
: 用于验证缓存的有效性。 正确配置 HTTP 缓存可以帮助提高网站的加载速度,减少服务器的负载,并节省带宽。然而,缓存策略需要根据网站内容和用户需求仔细设计,以确保用户总是能获取到最新的内容。
什么是 nginx http 超时
在 Nginx 中,HTTP 超时是指服务器与客户端之间的交互在指定的时间内未完成时,服务器将中断连接的设定。这些超时设置是为了优化服务器性能,防止资源长时间被占用而无法服务其他请求。以下是几种常见的 Nginx HTTP 超时设置:
keepalive_timeout: 这个指令设置了客户端到服务器的连接在闲置状态下可以保持打开状态的最长时间。超过这个时间后,如果没有数据交换,连接将被关闭。这有助于减少服务器上的并发连接数。
send_timeout: 当服务器向客户端发送响应数据时,如果在指定时间内数据不能发送完毕(例如因为客户端的接收速度慢),连接会被服务器终止。这个超时防止了服务器资源在尝试完成一个很慢的传输时被过度占用。
client_body_timeout 和 client_header_timeout: 这两个指令分别设置服务器等待从客户端接收请求体和请求头的最大时间。如果客户端在这段时间内没有完全发送请求,服务器将关闭连接。
proxy_read_timeout: 当 Nginx 作为反向代理时,这个指令设置了 Nginx 向后端服务器请求数据的超时时间。如果后端服务器在指定时间内没有响应,Nginx 将中断请求。
这些超时设置对于保护 Nginx 服务器免受慢连接或恶意请求的影响至关重要,有助于维持服务器的稳定性和响应速度。通过合理配置这些超时参数,可以在保证服务质量的同时,提高服务器的整体性能和可靠性。
协商缓存/强缓存/禁止缓存(前端实战)
nginx 配置协商缓存
前端协商缓存,也称为客户端缓存,涉及到使用 HTTP 响应头来控制浏览器如何缓存内容。主要使用的响应头包括 Cache-Control
、Expires
、ETag
和 Last-Modified
。下面将介绍如何在 Nginx 中配置这些响应头来实现前端协商缓存。
1. Cache-Control
Cache-Control
响应头是最常用的缓存控制方式,它允许指定资源被缓存的方式以及缓存的最大期限。
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 设置 Cache-Control 头,指定资源可以在客户端缓存 2 天
add_header Cache-Control "public, max-age=172800";
}
}
2. Expires
Expires
响应头用于指定资源过期的具体时间。一旦资源过期,浏览器会向服务器发起新的请求。
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 设置资源过期时间为1天后
expires 24h;
}
}
3. ETag
ETag
响应头提供资源的特定版本标记,当资源更新时,ETag 值会改变。浏览器可以使用此标记来验证缓存内容是否仍然是最新的。
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 开启ETag
etag on;
}
}
4. Last-Modified
Last-Modified
响应头表示资源最后修改的时间。类似于 ETag,它用于验证缓存的资源是否还是最新的。
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# Nginx 默认会设置 Last-Modified 头
}
}
综合配置示例
你可以在同一个配置中结合使用多种缓存策略来提高效率和确保内容的新鲜度。
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 缓存配置
add_header Cache-Control "public, max-age=172800";
expires 24h;
etag on;
# 当内容发生变化时,通过不同的 ETag 或 Last-Modified 通知浏览器更新缓存
}
}
通过这样配置,你可以有效地控制浏览器端的缓存行为,提高网站的访问速度,减少服务器的请求负载。在实际部署时,可以根据实际需要调整缓存时长和策略。
nginx 配置强缓存
在 Nginx 配置中实现前端强缓存主要依赖于 Cache-Control
和 Expires
HTTP 头。强缓存策略使得客户端(如浏览器)在缓存失效之前不需要与服务器进行任何通信,直接从本地缓存中读取数据。这样可以显著提升页面加载速度并减轻服务器的负载。下面是如何在 Nginx 中配置强缓存的步骤。
配置 Nginx 以启用强缓存
使用
Cache-Control
Cache-Control
头可以具体指定缓存的最大有效时间(max-age
),以及是否允许缓存(public
或private
)。nginxserver { location /static/ { root /usr/share/nginx/html; index index.html index.htm; # 强缓存设置,缓存时间设置为1年 add_header Cache-Control "public, max-age=31536000"; } }
这里设置了
/static/
路径下的资源(通常是 CSS、JavaScript、图片等静态资源)使用强缓存,缓存期限为一年。使用
Expires
Expires
头提供了一个 HTTP 日期,表示资源什么时候过期。如果同时指定了Cache-Control
的max-age
,则通常浏览器会优先考虑max-age
。nginxserver { location /assets/ { root /usr/share/nginx/html; index index.html index.htm; # 设置资源过期时间为30天后 expires 30d; } }
上面的配置使得
/assets/
目录下的资源被设置为 30 天后过期,之前不需要再次验证。
注意事项
- 确保版本控制: 强缓存可能导致客户端长时间使用过时的文件。为了避免这个问题,通常在文件名中加入版本号或哈希值,如
app.12345.css
。每次文件更新时,更新链接中的版本号或哈希值。 - 选择合适的资源进行强缓存: 通常只有那些不经常变动的静态资源才适合应用强缓存策略,如图片、CSS 文件、JavaScript 文件等。
- 调试和测试: 部署新的缓存策略后,应该在不同的环境中(如开发、测试、生产)进行详细的测试,确保所有的配置按预期工作,同时保持资源的更新能够及时反映到客户端。
通过这些设置,你可以有效地利用 Nginx 来控制前端的强缓存,从而提升网站的性能。
nginx 配置禁止缓存
要在 Nginx 中配置前端禁止缓存,即确保客户端每次请求都向服务器发送请求以获取最新的内容,可以使用 Cache-Control
和 Expires
头来指定。这种配置常用于动态内容或在开发阶段,以确保每次都加载最新的资源。以下是如何在 Nginx 中配置使得前端完全不缓存内容的方法:
1. 设置 Cache-Control
ngx_http_headers_module https://nginx.org/en/docs/http/ngx_http_headers_module.html
通过 Cache-Control
头,可以指定 no-cache
, no-store
, 或 must-revalidate
来防止浏览器缓存内容。
no-cache
:强制每次请求都向服务器验证缓存的有效性。no-store
:完全禁止缓存,每次请求都需要从服务器获取新的内容。must-revalidate
:告诉浏览器,一旦缓存过期,必须去服务器验证是否还有效。
配置示例
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 完全禁止缓存
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
}
2. 设置 Expires
通过设置 Expires
头为过去的时间,可以告诉浏览器此内容已过期,不应该被缓存。
配置示例
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 设置资源过期时间为过去的日期
expires -1;
}
}
综合配置
通常,结合使用 Cache-Control
, Pragma
, 和 Expires
头是最有效的方式,以确保内容不被浏览器缓存:
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 完全禁止缓存
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
}
}
注意事项
- 影响性能:禁用缓存会增加服务器的负载,因为每个请求都需要服务器处理,而不是由客户端的缓存满足。
- 适用场景:通常在开发环境或者对内容实时性要求极高的应用中使用,例如股票交易平台。
通过这些配置,你可以控制 Nginx 确保前端不对任何资源进行缓存,每次都从服务器获取最新数据。
nginx 内容缓存
官方文档:https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/
什么是 nginx 内容缓存
Nginx 内容缓存(NGINX Content Caching)是一种通过 Nginx 服务器软件实现的缓存机制,它允许将网站的静态内容(如图片、CSS、JavaScript 文件等)缓存在 Nginx 服务器上。当用户请求这些静态内容时,Nginx 可以直接从缓存中读取并迅速响应,而不是每次都从源服务器获取,从而提高了内容的访问速度和降低了源服务器的负载。
Nginx 是一种流行的开源 web 服务器和反向代理服务器,它支持多种功能,包括内容缓存。 Nginx 的内容缓存功能可以让服务器存储 web 页面的副本,包括文件和生成的页面,从而在不需要每次都从原始服务器或应用程序加载时就能快速提供这些页面。
nginx 内容缓存好处
提高响应速度:缓存可以显著减少服务器响应客户端请求的时间,因为它允许直接从缓存中提供数据,而无需每次请求都执行完整的后端处理。
减轻后端负载:通过减少对原始资源服务器的请求,缓存可以帮助减轻服务器负载,特别是在高流量情况下。
节省带宽:缓存静态内容(如图片、CSS 文件和 JavaScript 文件)可以减少通过网络传输的数据量。
在配置 Nginx 的内容缓存时,你可以设定多种参数,例如缓存的持续时间、缓存哪些类型的内容以及缓存存储位置等。缓存的内容通常保存在文件系统中,也可以配置为保存在内存中,以进一步提高访问速度。
具体实施内容缓存时,你需要在 Nginx 配置文件中设置 proxy_cache 、proxy_cache_path 指令,并定义缓存的键值和过期时间等。这可以帮助你根据自己的需求精细地控制缓存行为。
nginx http 和反向代理超时配置
超时设置是确保 Nginx 有效处理客户端连接的重要部分。 这包括了读取客户端请求主体、请求头、保持连接的超时设置等。
http {
# 客户端请求主体超时时间
client_body_timeout 12;
# 客户端请求头超时时间
client_header_timeout 12;
# 保持连接的超时时间
keepalive_timeout 15;
# 发送超时
send_timeout 10;
server {
location / {
proxy_pass http://my_backend;
# 设置传输超时
proxy_read_timeout 60;
proxy_connect_timeout 30;
# 长连接超时设置
proxy_send_timeout 60;
proxy_set_header Connection "";
# 添加头部,保持连接
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
}
nginx 文件发送和 TCP 优化
sendfile
, tcp_nopush
, 和 tcp_nodelay
是控制文件传输方式的指令,它们帮助优化了文件发送过程和 TCP 连接的使用。
sendfile
:- 作用:
sendfile
指令用于启用或禁用 Linux 下的sendfile()
系统调用。sendfile()
能够直接在内核中传输数据,避免了将数据从内核空间复制到用户空间再复制回内核空间的开销。这种方式可以显著提高大文件的传输速度,减少 CPU 使用率。对于静态文件服务器来说,这是一种非常有效的优化方法。 - 语法:
sendfile on | off;
- 默认值:
sendfile off;
- 上下文:
http
,server
,location
- 备注:当启用时,Nginx 会尽量使用 sendfile() 来处理静态文件传输,适用于大量静态内容的传输,如图片、视频、大型 CSS 和 JavaScript 文件等。
- 作用:
tcp_nopush
:- 作用:这个指令告诉 Nginx 在使用
sendfile
发送数据时,不要立即发送 HTTP 响应头,而是等到整个 HTTP 响应体就绪后再一起发送,这样做可以减少网络包的数量,提高网络的传输效率。这个选项仅在与sendfile
一起使用时有效。 - 语法:
tcp_nopush on | off;
- 默认值:
tcp_nopush off;
- 上下文:
http
,server
,location
- 注意:这个选项在某些操作系统上被称为
TCP_CORK
。 - 备注:此指令通常与 sendfile 指令结合使用,以减少因多次发送小块数据而产生的网络开销。适用于文件下载和大流量传输场景,有助于提高网络效率。
- 作用:这个指令告诉 Nginx 在使用
tcp_nodelay
:- 作用:
tcp_nodelay
指令用于控制 Nagle 算法的应用。Nagle 算法通过减少需要发送的小数据包数量来优化 TCP/IP 网络的效率,但这可能会增加数据到达的延迟,因为小块数据需要被缓冲直到累积到一个较大的数据块或等待 ACK。当tcp_nodelay
设置为 on 时,Nginx 会禁用 Nagle 算法,即允许立即发送小块数据。 - 语法:
tcp_nodelay on | off;
- 默认值:
tcp_nodelay on;
- 上下文:
http
,server
,location
- 备注:这在需要快速响应的交互式应用中非常有用,如在线游戏、实时通信等场景,可以减少通信的延迟。
- 作用:
在使用这些指令时,应根据具体的应用场景和网络条件进行选择。
sendfile
适用于提高大量静态内容的传输效率,节省 CPU 资源。- 对于文件下载服务,大文件传输,启用
sendfile
和tcp_nopush
可以提高效率; - 而对于需要快速交互的应用,如在线游戏或实时通讯,则可能需要启用
tcp_nodelay
来减少延迟。
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
常用的指令介绍
nginx 常用的 timeout 相关指令介绍
client_body_timeout
client_header_timeout
keepalive_timeout
send_timeout
在 Nginx 配置中,与超时相关的指令非常重要,因为它们帮助管理客户端连接和数据传输的行为。 以下是这几个常用超时相关指令的详细介绍:
1. client_body_timeout:
这个指令设置了服务器等待客户端发送请求体的时间。如果在这个时间内没有读取到数据,则服务器将关闭连接。这个设置对于控制那些可能需要上传较大数据但网络条件不佳的客户端尤其有用。
2. client_header_timeout:
这个指令定义了服务器等待客户端完成发送请求头的时间。如果超过这个时间,客户端还没有发送完整的请求头,服务器将关闭连接。这有助于防止恶意或不完整的连接占用服务器资源。
3. keepalive_timeout:
这个指令指定了服务器端保持 keepalive 连接打开的时间。在这段时间内,如果客户端发起新的请求,则可以复用现有的连接,而不需要重新建立连接。这可以减少延迟,提高性能。此指令同时也控制了服务器发送给客户端的 Keep-Alive: timeout
头部的值,这个头部告诉客户端服务器将在多长时间后关闭空闲连接。
4. send_timeout:
这个指令设置了服务器向客户端发送响应数据的超时时间。如果在指定时间内服务器无法发送所有的数据给客户端,连接将被关闭。这个超时主要涉及到网络延迟和客户端处理能力,有助于确保不会因为慢客户端而导致服务器资源被长时间占用。
nginx 指令 client_body_buffer_size
和 client_max_body_size
介绍
在 Nginx 配置中,client_body_buffer_size
和 client_max_body_size
这两个指令是用来控制处理客户端请求体的行为的。这里是它们各自的作用说明:
1. client_body_buffer_size:
作用
: 这个指令指定了 Nginx 为读取客户端请求体(如 POST 数据)分配的内存缓冲区的大小。如果请求体的大小超过了这个缓冲区,则会被写入到一个临时文件中。这个设置有助于优化处理大量数据的请求的性能,因为它可以减少磁盘 I/O 操作。通常情况下,如果你的应用经常处理大量的 POST 数据,可能需要调整这个值以获得更好的性能。默认值
: 通常情况下,这个值的默认大小是 8k 或 16k,具体取决于 Nginx 的版本和操作系统。影响
: 如果这个值设置得太小,可能会导致大请求体无法有效处理,从而影响性能。如果设置得太大,可能会消耗过多的内存资源。
2. client_max_body_size:
作用
: 这个指令限制了客户端请求体的最大允许大小。如果请求中的数据体超过了这个值,Nginx 将返回一个 HTTP 413 错误(Request Entity Too Large)。 这个设置主要用于防止由于客户端发送过大的数据而导致的服务拒绝(DoS)攻击,同时也有助于管理服务器的负载。默认值
:通常默认为 1M。(如果有上传文件或者大的表单需求一定要配置这个值,否则可能会出现 413 的错误)影响
:正确设置这个值对于保护服务器免受过大请求体的侵害很重要,特别是在上传文件等场景中。如果限制太小,合法的用户请求可能会被拒绝;如果太大,可能会引发服务器的资源耗尽或其他安全问题。
nginx http 请求头 Cache-Control 都有哪些值
HTTP 请求头中的Cache-Control
字段用于指定请求和响应遵循的缓存机制。在 Nginx 中配置 HTTP 缓存时,可以设置以下几种Cache-Control
的值:
no-cache
:表示客户端可以缓存资源,但在每次使用之前必须重新验证资源的有效性。即,缓存的内容必须再次向服务器进行验证,如果资源未被修改,则可以使用缓存版本。no-store
:禁止缓存,无论是客户端还是代理服务器都不应该缓存资源。public
:表明响应可以被任何中间人(如代理服务器)缓存。private
:表明响应只能被最终用户的浏览器缓存,不能被中间代理服务器缓存。max-age=<seconds>
:指定资源被缓存的最大时间,单位是秒。在此时间范围内,资源被认为是新鲜的,不需要重新验证。s-maxage=<seconds>
:类似于max-age
,但它只适用于共享缓存(如代理服务器),私有缓存会忽略这个指令。min-fresh=<seconds>
:指示客户端希望获取至少还未过指定时间的缓存资源。max-stale[=<seconds>]
:指示客户端愿意接收已经过期的资源,可选的<seconds>
参数表示客户端愿意接收过期的最大时间。must-revalidate
:告诉缓存,一旦资源过期,必须向源服务器重新验证。proxy-revalidate
:类似于must-revalidate
,但它只适用于代理服务器。only-if-cached
:指示客户端只希望获取缓存中的资源,如果缓存中没有,则返回 504 Gateway Timeout。immutable
: 当响应标记为immutable
时,表示资源在服务器上不会改变,这个指令提示浏览器和代理服务器在资源的有效期内不需要验证其有效性,即使用户发起了强制刷新(如按下 Ctrl+F5)。stale-while-revalidate=<seconds>
: 这个指令允许客户端在后台异步检查新版本的同时,继续使用过期的缓存版本。这样可以提高用户感知的加载速度。stale-if-error=<seconds>
: 如果在重新验证缓存的资源时服务器发生错误,这个指令允许客户端暂时继续使用过期的缓存。这有助于在服务器出错时保持服务的可用性。
例子 1:为 HTML 页面设置缓存
为了减少服务器负载并快速提供内容,对 HTML 页面使用 Cache-Control 配置是常见的做法。以下是在 Nginx 配置文件中为 HTML 页面设置缓存的示例:
location / {
try_files $uri $uri/ =404;
add_header Cache-Control "private, no-cache, no-store, must-revalidate";
}
这个配置适用于 HTML 页面,设置 Cache-Control 头为 private, no-cache, no-store, must-revalidate
,确保页面总是从服务器获取最新版本,适用于高动态内容的网站。
例子 2:优化图片和静态内容的缓存
对于图片和静态文件(如 CSS 和 JavaScript),可以设置一个长时间的缓存,以减少重复请求,加速页面加载速度。以下是一个具体的配置示例:
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 365d;
add_header Cache-Control "public, max-age=31536000";
}
这个配置设置了静态资源的缓存过期时间为 365 天,并且通过 Cache-Control
头将这些文件标记为可以公开缓存,并且缓存最大时长为 31536000 秒(即 1 年),这有助于提高访问速度和减轻服务器压力。
例子 3:动态内容的无缓存配置
对于高度动态的内容,如用户个人信息页或实时数据显示,通常设置为不缓存,以确保数据的实时性。
location /dynamic-content/ {
try_files $uri $uri/ =404;
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
}
例子 4:设置内容可稍微过时的缓存策略
在某些情况下,允许内容短时间内过时可以接受,比如新闻网站的新闻列表,可以使用 stale-while-revalidate
指令。
location /news/ {
try_files $uri $uri/ =404;
add_header Cache-Control "public, max-age=600, stale-while-revalidate=3600";
}
这个配置允许缓存内容在过期后的一个小时内仍然被使用,同时在后台尝试更新缓存。这样可以提高用户感知的加载速度,同时减少服务器压力。
例子 5:为 API 响应设置缓存
API 响应,特别是那些数据不经常改变的,可以设置较短的缓存时间,减少数据库或服务器的查询压力。
location /api/ {
try_files $uri $uri/ =404;
add_header Cache-Control "private, max-age=300";
}
这个配置适用于例如天气信息、股票价格等,其中数据可能每几分钟更新一次。通过设置较短的缓存时间(如 5 分钟),可以确保数据的相对新鲜性,同时提高响应速度。
nginx expire 指令
expires
指令是 Nginx 的 ngx_http_headers_module
模块提供的。这个指令用于设置资源的过期时间,通常用于定义静态资源(如图片、CSS 和 JavaScript 文件)的缓存策略。通过设置 expires
指令,可以控制这些资源的缓存时间,从而影响客户端和代理服务器的缓存行为。
可设置的值
expires
指令可以接受几种类型的值,包括:
具体时间:指定一个绝对时间,比如 "Thu, 31 Dec 2037 23:55:55 GMT"。这是一个固定的日期和时间,表明资源应在这一刻过期。
时间段:
- 以秒、分钟、小时、天、月、年为单位设置相对时间,如
expires 1d;
表示资源将在一天后过期。 - 可用的时间单位包括:
s
(秒)m
(分钟)h
(小时)d
(天)M
(月)y
(年)
- 以秒、分钟、小时、天、月、年为单位设置相对时间,如
特殊值:
expires max;
:设置资源的过期时间为最大值,通常等同于 "Thu, 31 Dec 2037 23:55:55 GMT",这是常用的方法来指示浏览器尽可能长时间地缓存资源。expires epoch;
:设置资源的过期时间为 Unix 纪元("Thu, 01 Jan 1970 00:00:01 GMT"),即告诉浏览器资源已经过期,不应进行缓存。expires off;
:关闭expires
功能,不发送 Expires 头和 Cache-Control 中的 max-age 指令。
通过合理配置 expires
指令,可以有效管理网站资源的缓存策略,加速网站加载速度,减少服务器负载。这在处理静态资源时尤为重要,因为这些资源往往不需要频繁更新。
参考连接
Nginx 下关于缓存控制字段 cache-control 的配置说明 - 运维小结 https://www.cnblogs.com/kevingrace/p/10459429.html
http Cache-Control 详解及 nginx 设置 Cache-Control https://blog.csdn.net/wangjun5159/article/details/128564360
浅谈 http 中的 Cache-Control https://www.xiaoxiaoguo.cn/protocol/http-Cache-Control.html
ngx_http_headers_module https://nginx.org/en/docs/http/ngx_http_headers_module.html