我正在使用响应头来确保页面没有缓存在浏览器端,我使用了以下代码来执行此操作。 有人可以跟我通知,
有人可以详细说明这个缓存的工作原理吗?在Windows中,我们有寺庙互联网文件,它与此有关。
Response.CacheControl = "no-cache, no-store";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
答案 0 :(得分:3)
阅读Mark Nottingham's excellent tutorial。
Response.CacheControl = "no-cache, no-store";
应该是
Response.CacheControl = "no-cache, no-store, must-revalidate";
和
Response.AddHeader("Pragma", "no-cache");
没有意义 - 尽管有很多网站建议(Manual - 它是一个REQUEST标头 - 而不是响应标头)。
Response.Expires = -1;
仅与HTTP / 1.0客户端相关 - 即使使用HTTP / 1.0堆栈,大多数主流浏览器仍然尊重HTTP / 1.1响应(缓存控制)标头。在没有缓存信息的情况下,brwser不应缓存响应。因此,省略这一点应该是完全安全的。
如何测试它的工作原理?
查看您的网络服务器日志文件或使用wireshark或iehttpheaders查看每次引用内容时浏览器是否返回服务器
它是否也会停止CSS和JS文件的缓存。
是 - 缓存信息与文件名及其mimetype无关。
答案 1 :(得分:1)
无法确保浏览器无法缓存任何内容
无论如何,您可以将浏览器指向不使用响应标头,但不能保证它在所有情况下都适用于所有浏览器。
如果你解释原因(防止使用后门按钮?),我们可以提出一个不错的解决方案。
答案 2 :(得分:0)
部分匹配:要检查您的响应标头,如果您使用Firefox,我建议使用Firebug扩展,使用它可以跟踪整个HTTP周期,包括请求和响应标头以及HTTP响应状态代码。