asp.net-mvc - .NET MVC 禁用浏览器缓存的最佳方法是什么?

标签 asp.net-mvc security browser-cache

就我的研究而言,有几个步骤可以确保禁用浏览器缓存。必须设置这些 HTTP header :

Cache-Control: no-cache, no-store, must-revalidate, proxy-revalidate
Pragma: no-cache
Expires: -1
Last-Modified: -1

我发现这可以通过两种方式完成:

方式一:使用web.config文件
<add name="Cache-Control" value="no-store, no-cache, 
    must-revalidate, proxy-revalidate"/>
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
<add name="Last-Modified" value="-1" />

方式二:使用_Layout.cshtml中的meta标签
<meta http-equiv="Cache-Control" content="no-cache, no-store,
    must-revalidate, proxy-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Expires" content="-1" />

我的问题:哪种方法更好?或者,它们是否同样可以接受?这些与不同平台有何关系?哪些浏览器会尊重哪些 header ?

此外,如果有的话,请随时添加我遗漏的任何内容。

最佳答案

好吧,伙计们,看来我犯了一个直率的错误。那里最好的方法就是 不是 使用元标记。 只有正确的方法是使用标题。

  • 为什么不使用元标记?因为他们保证不与
    代理,不读取(不应该读取)HTML 正文;他们
    依靠标题。
  • 当 Cache-Control 和 Expires 都存在时,Cache-Control 取
    优先权。 Source here .
  • Cache-Control 通用头字段用于指定指令
    请求/响应中的所有缓存机制都必须遵守
    链。 Source here .
  • 关于asp.net-mvc - .NET MVC 禁用浏览器缓存的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011440/

    相关文章:

    c# - 如果用户不在给定角色中,则重定向到另一个操作

    ruby-on-rails - attr_accessible/security question with rails - 处理这个问题的最佳方法是什么?

    google-chrome - Chrome - 仅禁用本地主机的缓存?

    javascript - 浏览器缓存 - 如果缓存了 javascript 文件,为什么我会看到重复的 http 请求?

    c# - 使用 MVC 托管时无法通过 AJAX 调用 WebAPI Controller

    c# - Web Api 无法识别 RestClient 框架

    asp.net-mvc - 发布到服务器时 MVC ActionLinks 呈现为空

    security - 带有分析的 Grails 菜单

    java - 加密文件或字符串安全 android

    javascript - service worker 列出缓存中的所有 url 并传递给另一个函数