【问题标题】:Prevent html pages from browsing caching防止html页面浏览缓存
【发布时间】:2014-06-26 07:22:37
【问题描述】:

我遇到的问题是部分文件(*.html)被浏览器缓存。虽然开发它不是一个大问题,但是一旦我部署了应用程序,客户端会看到旧页面,直到他们清除缓存或点击 ctrl F5 我已经尝试指定元标记(CACHE-CONTROL,EXPIRES),但仍然看到这些页面被拾取 来自chrome开发者工具中的缓存(也许我在这里遗漏了什么?)。

我打算尝试在 url 前面添加一些随机数,例如

<div ng-include src="'views/test.html?i=1000'"></div>

但是遇到了https://groups.google.com/forum/#!topic/angular/9gORRowzP2M,James Cook 正确地指出,这种方式会一遍又一遍地填充缓存。

我在某处读到最好在服务器的标头中设置元标记,但我不知道该怎么做?我正在考虑以某种方式在 http 拦截器中执行此操作?也许以某种方式在此 httpinterceptor 的请求或响应中添加元标记? https://gist.github.com/gnomeontherun/5678505

任何想法如何做到这一点?或者如果这是好/坏主意?或者有什么其他方法可以防止部分页面被浏览器缓存?

【问题讨论】:

  • 向我们介绍一下您的后端。
  • 不完全确定您所说的后端是什么意思以及它与浏览器缓存的关系?但是“后端”在 mongoDB 上,前端是 Asp.net Mvc 和 AngularJS 的混合体
  • 如果您的其他标头相当正常,则使用过去过期的标头应该可以解决问题。
  • 我试过用 -1 和 0 过期,但似乎没有用

标签: javascript html angularjs caching


【解决方案1】:

为了防止缓存,在许多情况下,仅从客户端完全关闭它是不可能的。您必须以正确的方式配置您的服务器,以便它生成正确的 HTTP-Headers。

但是在$templateCache 的帮助下,您可以将html 部分从单个文件移动到index.html 文件中的脚本标记中。这也将减少您的应用程序需要进行的 AJAX 调用次数。 使用 index.html 中的模板,您只需确保 index.html 没有被缓存。

这里也有一个讨论: Is there a way to make AngularJS load partials in the beginning and not at when needed?

【讨论】:

  • 就我而言,我确实有很多部分,我不认为我一开始就想全部下载,但会更多地考虑这个想法!
【解决方案2】:

如果其他人遇到同样的问题,我最终添加了一个 httphandler 并在响应标头中添加了“Cache-Control”和“Expires”

public void ProcessRequest(HttpContext context)
    {
        var partial = context.Request.FilePath;

        var filepath = context.Server.MapPath("~/" + partial);

        context.Response.AddHeader("Content-Disposition", "filename=\"" + Path.GetFileName(filepath) + "\"");

        // To make sure partial html pages are not cached by browser(s)
        context.Response.AddHeader("Cache-Control", "No-Cache");
        context.Response.AddHeader("Expires", "0");
        context.Response.ContentType = MimeTypesHelper.GetMimeType(filepath);
        context.Response.WriteFile(filepath);
    }

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 2010-10-17
    • 2013-05-18
    • 2010-10-25
    • 2020-05-27
    • 1970-01-01
    • 2011-04-28
    • 2017-02-06
    相关资源
    最近更新 更多