asp.net – 缓存通过VirtualPathProvider返回的静态资源
我正在使用VirtualPathProvider,它当前将虚拟路径映射到解决方案外部的目录.我正在建立这个主要是为了自我锻炼.这完全等同于在解决方案目录中具有软链接或NTFS硬链接.
无论如何,我设法使用我的自定义提供程序从该虚拟目录成功加载静态图像. 现在的问题是浏览器不会缓存图像.并且服务器甚至不考虑返回缓存信息(如ETag). 这就是我所做的: > GetFile(path).Open()通过File.Open()返回FileStream CTRL-F5ing仅返回以下标头(不引用缓存) Cache-Control private Content-Length 476 Content-Type image/png Date Sat,29 Dec 2012 21:25:54 GMT Server Microsoft-IIS/8.0 X-AspNet-Version 4.0.30319 X-Powered-By ASP.NET X-SourceFiles [...] 我目前正在调试Visual Studio的调试服务器和配备Firebug的Firefox. 举个例子,这就是我的预期(http://i.stack.imgur.com/3mn3d.png) Accept-Ranges bytes Cache-Control max-age=315360000 Content-Length 1059 Content-Type image/png Date Sat,29 Dec 2012 21:35:29 GMT Etag "7d636a8ef932ed081c16ace6f87b16e6" Expires Fri,12 Feb 2038 09:58:39 GMT Last-Modified Tue,14 Feb 2012 22:07:18 GMT Server ECAcc (fcn/4089) X-Cache HIT 问题很明显:如何让浏览器不重新加载这些静态资源? 解决方法
要缓存数据我通常以这种方式使用webconfig,这在我的个人建议中非常简单:
<system.webServer> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="180.00:00:00" /> </staticContent> <caching> <profiles> <add extension=".ico" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".html" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".htm" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".pdf" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".bmp" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> </profiles> </caching> </system.webServer> 我已经解决了所有问题. 你可以看看http://italiancallcenter.com使用相同的技术或http://annunciando.biz你可以在你的最后检查萤火虫或铬…. 我从未优化的唯一东西是etags. 我希望这是有帮助的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在gridview中只显示日期而不是da
- 在ASP.NET MVC中搜索路径
- 使用 xUnit 编写 ASP.NET Core WebAPI单元测试
- asp.net-mvc – ASP.NET MVC:忽略基本控制器类中
- ASP.NET 5 MVC(Visual Studio 2015):一个名为In
- asp.net-mvc – DisplayFormat未应用于十进制值
- asp.net-mvc – 如何创建文件并通过ASP.NET MVC中
- asp.net-mvc – ASP.NET MVC是否有任何DateTime路
- asp.net-mvc-3 – 将以“.cshtml”结尾的请求路由
- asp.net-mvc – 无法在MVC 3中禁用“……有潜在危