设置浏览器不缓存网页可以通过多种方法实现,以下是一些常见的策略:
HTTP响应头控制:
Cache-Control
:这是最常用的HTTP头之一,用于控制响应的缓存行为。例如:
Cache-Control: no-cache, no-store, must-revalidate
no-cache
:表示必须先向服务器验证实体,才能使用缓存的实体。no-store
:表示不缓存请求或响应的任何部分。must-revalidate
:表示缓存服务器在响应客户端请求之前,必须先向源服务器验证缓存的响应。
Pragma
:HTTP/1.0向后兼容的头,等同于Cache-Control
的no-cache
。
Pragma: no-cache
Expires
:设置一个过去的时间,使得响应被视为已经过期。
Expires: Thu, 01 Jan 1970 00:00:00 GMT
HTML Meta标签:
在HTML文档的<head>
部分添加以下meta标签:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
URL参数:
在URL后添加一个查询参数,比如时间戳,使得每次请求的URL都不同,从而避免缓存:
<img src="image.png?t=1234567890" alt="Image" />
<script src="script.js?v=1.2.3"></script>
Nginx禁止浏览器缓存网页:
# 设置禁用浏览器缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
# 设置缓存过期时间为60秒
add_header Cache-Control "public, max-age=60";
这里expires -1;表示过期时间为过去,即告诉浏览器页面已经过期,不应该被缓存。Cache-Control响应头的no-cache、no-store和must-revalidate指令进一步强化了不缓存的要求。
location / {
expires -1;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
}
修改配置文件后重启Nginx服务以应用更改:
systemctl restart nginx