如何确保静态内容被客户端缓存?

10

如何确保静态内容(图片、css、javascript)被缓存?最佳方法是什么?

2个回答

14

建议您阅读此教程,以了解Web(HTTP)中缓存的一般情况。

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

http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache
如何在IIS7中按文件夹和扩展名配置静态内容缓存?

编辑:由于您问到最佳方法,我现在看到最普遍的方法是对静态内容进行版本控制(例如,在文件或URL末尾附加某个版本标识符)。一旦被版本化,您可以将其视为不变的,然后发出缓存标头以无限期地缓存它。在ASP.NET应用程序中,您可以将汇编版本(或产品版本)附加到每个静态内容URL上。因此,您将在每次构建(或每次产品发布)时使缓存无效。


@VinayC,关于在IIS上提供的ASP.NET MVC应用程序的js和css文件缓存问题,有什么想法吗?先谢谢了... - Jack
@ClintEastwood,只要您提供静态文件,使用IIS配置发出缓存标头就可以了。为了处理静态内容的更新,您必须使用版本化的URL(例如/image/a.png?v=2),这样浏览器在更改版本时会再次请求。 - VinayC
@VinayC 为什么不试着发布一个代码示例,而不是只写注释??? - Jack

0
您还可以利用HTML5离线Web应用程序清单。它允许您设置一个清单,其中定义了将被本地缓存的文件。
这是一个不错的,易于理解的广泛实现的方法,可以避免学习IIS和HTML缓存。

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

(你应该彻底了解这些事情)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接