我有一个系统,它位于Web服务器上,可以动态生成文件以响应HTTP请求。目前这是作为HTTPHandler实现的。
生成文件后,它们不会经常更改,因此我想实现缓存。
理想情况下,我希望Web服务器查看缓存文件夹并直接从那里提供文件,而不必执行任何我的代码(Web服务器旨在善于服务毕竟文件,所以如果我可以更好地避免那么多!)。
我当时要做的是挂钩服务器的“找不到文件”事件,作为创建文件的机会,将副本放在缓存文件夹中以供下次请求时使用,并将其返回给用户而不是“找不到文件”消息。
这样,对文件的重复请求将快速闪烁,我的代码只会在“特殊”情况下被调用。
所以 - 问题是 - 我如何以尽可能不引人注目和轻量级的方式将我的代码连接到“找不到文件”事件中?
由于
答案 0 :(得分:2)
实际上非常简单,只需将IIS中的404错误页面指向HTTPHandler即可。
Request.RawUrl将如下所示:
http://yourdomain.com/yourhandler.ashx;originally/requested/url
答案 1 :(得分:1)
如何使用customError配置重定向到HttpHandler。
<customErrors mode="On">
<error statusCode="404" redirect="FileGeneratorHandler.ashx" />
</customErrors>
唯一的问题是引用页面是否可供处理程序使用。