【问题标题】:How can I make sure that static content is cached client-side?如何确保静态内容在客户端缓存?
【发布时间】:2012-03-30 14:42:01
【问题描述】:

如何确保缓存静态内容(图像、css、javascript)?最好的方法是什么?

【问题讨论】:

    标签: asp.net iis caching browser-cache


    【解决方案1】:

    您还可以使用 HTML5 Offline Web 应用程序清单。它允许您设置一个清单,您可以在其中定义哪些文件将在本地缓存。

    这是一种很好的、​​清晰易懂的广泛实施方式,无需了解 IISHTML 缓存。

    http://www.w3schools.com/html/html5_app_cache.asp

    (你应该完全阅读这些东西)

    【讨论】:

      【解决方案2】:

      建议您通过 this tutorial 了解缓存在 Web (HTTP) 上的一般情况。

      简单地说,Web 服务器需要在向客户端发送内容时生成适当的 HTTP 标头,以控制客户端缓存。在 ASP.NET/IIS 环境中,其 IIS 通常处理静态文件内容,因此,您必须适当配置 IIS 以根据需要控制缓存静态文件。有关为静态内容配置 IIS 缓存的更多信息,请参阅以下链接:

      http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache
      How to configure static content cache per folder and extension in IIS7?

      编辑:正如您所问的最佳方法,我现在看到的最流行的方法是版本静态内容(例如通过在文件或 URL 的末尾附加一些版本标识符) .版本化后,您可以将其视为不可变的,然后发出缓存标头以无限期缓存它。在 ASP.NET 应用程序中,您可能可以将程序集版本(或产品版本)附加到每个静态内容 URL。因此,本质上,您将使每个构建(或每个产品发布)的缓存无效。

      【讨论】:

      • @ClintEastwood,只要您提供静态文件,使用 IIS 配置发出缓存头就可以了。要处理静态内容的更新,您必须使用版本化 url(例如 /image/a.png?v=2),以便浏览器在您更改版本时再次请求。
      • @VinayC 为什么不尝试发布示例代码而不仅仅是编写 cmets?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2015-10-04
      • 1970-01-01
      相关资源
      最近更新 更多