我知道以前有人问过这个问题,但我对最佳方法感到困惑,所以请原谅我再次问。。。
我有一个MVC3应用程序,它将是一个extranet,允许用户通过Forms Authentication登录。用户将访问机密信息,因此,为了防止有人在注销后进行反击(以及我注销表单身份验证),我禁用了所有缓存,强制重定向到登录页面。
从安全角度来看,一切都很好,但我的问题是,我想缓存页面的非安全元素,如图像、背景、徽标等。
目前,每一页都呈现出丑陋的闪烁,因为每次我所有的作品都被下载。
当然,这也会对带宽产生负面影响。
我如何控制缓存,使艺术作品、css、脚本等得到缓存,同时防止FormsAuthentication SignOut问题后出现可怕的Back按钮?
提前谢谢你,
西蒙。
假设图像不是动态生成的,则可以通过MVC或使用IIS在内部生成。
在内部,你需要提供所有的图像,并设置到期时间。
如果您使用IIS会变得简单得多,您只需将IIS自定义标头部分中的过期标头编辑为将来的日期(过去的日期会自动使其过期)。如果您希望确保图像未被缓存,请向其添加一个查询字符串
<img src="image.png?dummy=8sn7ahh2" />
然后图像也不会被缓存,所以你基本上想缓存所有图像,然后黑名单(使用查询字符串)你不想缓存的图像。
下面是一个关于如何为IIS7 打开/关闭的好例子