nginx配置协商缓存
时间: 2024-09-12 17:01:19 浏览: 35
Nginx配置协商缓存主要是利用HTTP的304状态码来实现的。当客户端(比如浏览器)向服务器请求一个资源时,如果该资源在客户端本地缓存中存在且未过期,浏览器会附带上之前获取该资源时服务器返回的ETag(实体标签)或Last-Modified(最后修改时间)信息。服务器接收到这样的请求后,会检查ETag或Last-Modified信息,并与服务器端的资源进行比较,如果发现资源没有变化,则会返回304状态码,告知客户端可以使用本地缓存的资源,从而避免了不必要的数据传输,提高了性能。
在Nginx中,协商缓存的配置通常包括两个主要指令:`etag` 和 `if_modified_since`。
1. `etag`:启用或禁用ETag,如果启用了ETag,Nginx会自动为响应生成ETag头。
示例配置:
```
etag on;
```
2. `if_modified_since`:用于设置Nginx如何处理`If-Modified-Since`请求头。默认情况下,Nginx会处理这些请求头,如果资源未修改则返回304响应。
示例配置:
```
if_modified_since exact;
```
这里的`exact`表示完全根据`Last-Modified`时间来决定是否返回304响应。还可以设置为`off`来禁用该功能,或者`before`来使用客户端提供的值与服务器上的文件时间比较。
完整的Nginx配置示例可能如下:
```
server {
listen 80;
server_name example.com;
root /path/to/your/webroot;
etag on;
if_modified_since exact;
location / {
try_files $uri $uri/ =404;
}
}
```
在这个配置中,如果客户端发送了带有`If-None-Match`头的请求(携带ETag),Nginx会检查资源的ETag是否匹配;如果发送了带有`If-Modified-Since`头的请求(携带上次获取资源的时间),Nginx会根据资源是否被修改来返回相应的304响应。
阅读全文