是否可以在服务器和客户端上缓存http处理程序的响应?
这似乎没有做到这一点:
_context.Response.Cache.SetCacheability(HttpCacheability.Public); _context.Response.Cache.SetExpires(DateTime.Now.AddDays(7));
_context是作为IHttpHandler实现上的ProcessRequest方法的参数传递的HTTPContext。
有什么想法吗?
更新:客户端会缓存通过httphandler加载的图像,但如果另一个客户端执行相同的调用,则服务器尚未缓存它。因此,对于要求图像的每个客户端,服务器都会转到数据库(和文件流)。如果我们使用aspx页面而不是httphandler和缓存配置文件,那么图像将缓存在客户端和服务器上。
答案 0 :(得分:4)
使用IIS7,可以在web.config中完成。
例如,假设您的ashx网址为:
/ashxfiles/myhandler.ashx
...你希望通过查询字符串参数来改变:
id,lang
将以下内容添加到您的web.config:
<location path="ashxfiles">
<system.webServer>
<caching>
<profiles>
<add extension=".ashx" policy="CacheForTimePeriod" duration="00:00:10" varyByQueryString="id, lang" />
</profiles>
</caching>
</system.webServer>
</location>
此规则适用于目录中的所有.ashx文件,因此如果您需要更精细地控制缓存设置,则可能需要将.ashx文件放在单独的文件夹中。
答案 1 :(得分:3)