我开发了一个 IIS HTTP 模块,它可以动态调整图像大小。它查看传入的 URL 并执行正则表达式以确定 URL 是否与我们要调整大小的图像匹配,并提取请求的图像大小(缩略图、大等)。然后它检查磁盘上此特定图像大小的缓存版本,然后输出该版本,或者如果未找到,则将源图像的大小调整为请求的大小,将其保存到磁盘,然后输出该文件。代码的症结在这里:
context.Response.WriteFile(file);
context.Response.End();
但是,这总是会返回 200 的 HTTP 状态代码,并且不会在后续请求中返回 304。相反,我认为最好让我的模块更改其他 HTTP 处理程序将看到文件请求的“虚拟”路径,并且他们可以做自己的事情,例如缓存等。我尝试使用 HttpContext.RewritePath( ) 但这会导致 500 错误,可能是因为以下几点:
我的图像文件夹位于网站根目录之外。我不希望它们位于网络根目录中,因为有人可能会请求源图像。此图像大小调整系统仅允许具有某个最大尺寸的图像。