Tomcat设置HTTP缓存与静态资源优化技巧
发布时间: 2024-05-01 01:34:47 阅读量: 185 订阅数: 59
![Tomcat设置HTTP缓存与静态资源优化技巧](https://img-blog.csdnimg.cn/89742ddce48a4e379c964cda5de38ea4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATXRpcmVkTQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
# 1. HTTP缓存概述**
HTTP缓存是一种机制,它允许Web服务器将经常请求的文件存储在客户端的本地计算机上。这可以减少网络流量,提高网站的性能。
HTTP缓存主要有两种类型:
* **浏览器缓存:**浏览器缓存存储在客户端的本地计算机上。当用户访问网站时,浏览器会检查缓存中是否有请求的文件。如果有,浏览器将从缓存中加载文件,而不是从服务器请求。
* **代理缓存:**代理缓存存储在代理服务器上。代理服务器是一个位于客户端和服务器之间的中间服务器。当客户端请求文件时,代理服务器会检查缓存中是否有请求的文件。如果有,代理服务器将从缓存中加载文件,而不是从服务器请求。
# 2. Tomcat HTTP缓存配置
### 2.1 缓存策略
HTTP缓存策略决定了浏览器如何处理缓存的响应。Tomcat支持以下两种缓存策略:
#### 2.1.1 Last-Modified和ETag
**Last-Modified:**
该头指示资源最后修改的时间。如果客户端请求的资源自上次修改后未发生变化,服务器将返回304 Not Modified状态码,浏览器将使用缓存的版本。
**ETag:**
该头指示资源的唯一标识符。如果客户端请求的资源自上次请求后未发生变化,服务器将返回304 Not Modified状态码,浏览器将使用缓存的版本。
#### 2.1.2 Expires和Cache-Control
**Expires:**
该头指示资源的过期时间。当资源过期时,浏览器将向服务器发送新的请求。
**Cache-Control:**
该头提供了更细粒度的缓存控制。它支持以下指令:
* **max-age:**指定资源在缓存中的最大生存时间(以秒为单位)。
* **s-maxage:**指定资源在共享缓存中的最大生存时间(以秒为单位)。
* **public:**允许公共缓存(例如CDN)缓存资源。
* **private:**仅允许私有缓存(例如浏览器)缓存资源。
### 2.2 缓存大小和过期时间
Tomcat可以通过以下配置来控制缓存大小和过期时间:
#### 2.2.1 maxAge和s-maxage
**maxAge:**
在web.xml文件中配置,指定资源在缓存中的最大生存时间(以秒为单位)。
```xml
<context-param>
<param-name>org.apache.catalina.connector.Response.maxCacheAge</param-name>
<param-value>3600</param-value>
</context-param>
```
**s-maxage:**
在web.xml文件中配置,指定资源在共享缓存中的最大生存时间(以秒为单位)。
```xml
<context-param>
<param-name>org.apache.catalina.connector.Response.sMaxAge</param-name>
<param-value>1800</param-value>
</context-param>
```
#### 2.2.2 缓存大小限制
**maxFileSize:**
在server.xml文件中配置,指定单个文件在缓存中的最大大小(以字节为单位)。
```xml
<Connector port="8080" maxFileSize="1000000" ... />
```
**maxTotalSize:**
在server.xml文件中配置,指定缓存的总大小(以字节为单位)。
```xml
<Connector port="8080" maxTotalSize="10000000" ... />
```
#
0
0