1

我知道以前有人问过这个问题,但我对最好的方法感到困惑,所以请原谅我再次问...

我有一个 MVC3 应用程序,它将成为一个外联网,允许用户通过表单身份验证登录。用户将访问机密信息,因此,为了防止有人在他们注销后回击(并且我注销 FormsAuthentication),我禁用了所有缓存,强制重定向到登录页面。

从安全的角度来看,一切都很好,但我的问题是我想缓存页面的非安全元素,例如图像、背景、徽标等。

目前,每个页面都呈现出难看的闪烁,因为我的所有作品每次都被下载。

当然,这也会对带宽产生负面影响。

如何控制缓存以使艺术品、css、脚本等得到缓存,同时防止在 FormsAuthentication SignOut 问题后出现可怕的后退按钮?

先感谢您,

西蒙。

4

1 回答 1

1

假设图像不是动态生成的,您可以通过 MVC 或使用 IIS 在内部进行。

在内部,您需要提供所有图像并设置过期时间。

如果您使用 IIS,它会变得简单得多,您只需将 IIS 自定义标头部分中的过期标头编辑为将来的日期(过去的日期会自动使其过期)。如果您希望确保不缓存图像,请向其添加查询字符串

<img src="image.png?dummy=8sn7ahh2" />

然后图像也不会被缓存,因此您基本上想要缓存所有图像,然后将不希望缓存的图像列入黑名单(使用查询字符串)。

这是一个关于如何为 IIS7 打开/关闭它的好例子

于 2012-08-02T11:52:38.347 回答