ASP.NET缓存方案
Cache‑Control 不设置(缺失)的真实影响
不设置 Cache‑Control 时,IIS/ASP.NET 默认允许浏览器缓存页面、表单、用户数据。
1. 退出登录后,按返回键还能看到后台页面(最大隐患)
用户退出系统、关闭浏览器后,别人打开浏览器后退就能看到之前的敏感页面、查询数据、账号信息。
这是等保必查高危漏洞。
2. 敏感数据本地保存,容易泄露
浏览器会把页面 HTML、接口数据存在本地缓存文件夹,
木马、恶意软件可读取缓存文件,泄露账号、业务数据。
3. 代理服务器(公司网关、CDN)缓存你的页面
内网 / 外网代理会缓存页面,其他用户可能访问到别人的后台数据。
4. 安全扫描直接报中高危漏洞
配置 no-cache, no-store, must-revalidate 解决了什么?
no-store:禁止浏览器本地存储任何页面内容(最核心)no-cache:每次必须请求服务器,不直接用缓存must-revalidate:过期后强制重新请求,不使用旧缓存
通俗比喻
- no-store = 看完就销毁,不留痕迹
- no-cache = 想看新内容,必须问服务器
- must-revalidate = 绝对不能用旧的
简单说:看完即销毁,不留痕迹,后退也看不到旧页面。
全局 Cache-Control=no‑store 会让 JS、CSS、图片、静态资源每次都重新下载,页面变慢、服务器压力变大
ASP.NET Framework 4.0 + IIS 完美方案:
动态页面(后台页面 / 接口)禁止缓存,静态资源(js/css/img)允许缓存,既过等保,又不影响性能。
一、原理
- 全局 Web.config 加
Cache-Control: no-cache, no-store, must-revalidate→ 所有请求默认不缓存 - 用 IIS 输出缓存 / 位置匹配,对静态文件单独放开缓存
二、直接复制可用配置(Web.config,.NET4.0 专用)
<configuration> <system.webServer> <httpProtocol> <customHeaders> <!-- 全局默认:动态页面禁止缓存(过等保) --> <add name="Cache-Control" value="no-cache, no-store, must-revalidate" /> </customHeaders> </httpProtocol> <!-- 👇 关键:静态资源单独允许缓存,解决性能问题 --> <location path="Content"> <system.webServer> <httpProtocol> <customHeaders> <remove name="Cache-Control" /> <add name="Cache-Control" value="public, max-age=86400" /> </customHeaders> </httpProtocol> </system.webServer> </location> <location path="Scripts"> <system.webServer> <httpProtocol> <customHeaders> <remove name="Cache-Control" /> <add name="Cache-Control" value="public, max-age=86400" /> </customHeaders> </httpProtocol> </system.webServer> </location> <location path="Images"> <system.webServer> <httpProtocol> <customHeaders> <remove name="Cache-Control" /> <add name="Cache-Control" value="public, max-age=86400" /> </customHeaders> </httpProtocol> </system.webServer> </location> </system.webServer> </configuration>
说明
max-age=86400= 缓存 1 天(可改:31536000=1 年)public= 浏览器、代理都可缓存- 只对 Content、Scripts、Images 静态文件夹生效
- aspx、ashx、接口、后台页面依然禁止缓存,满足安全要求
三、如果你静态文件比较散,不想一个个加 location
用 URL 重写模块 按后缀匹配(.js/.css/.png/.jpg),自动给静态文件加缓存头。
需要我给你写一段按后缀匹配的 rewrite 规则吗?
需要我给你写一段按后缀匹配的 rewrite 规则吗?
四、简单总结
全局禁止缓存 → 满足等保、防止退出后返回查看敏感数据
静态资源单独放开缓存 → 不影响页面加载速度、减少服务器压力
这套是企业后台系统 标准最优实践

浙公网安备 33010602011771号