我在数据库中保留了ID和服务器上传图像文件名之间的映射。
这是因为我需要使用ID而不是磁盘上的实际文件名来引用HTML中的图像(如果替换了图像,则很难有一个逻辑替换对新图像的引用)。 / p>
所以我看到的解决方案是有一个处理程序,它根据ID获取虚拟映像路径,然后重定向到此URL。这应该使ImageResizer.net仍然可以工作。
public class Image : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int id;
if (int.TryParse((string)context.Request.QueryString["id"], out id))
{
string path = ... // get filename from database by id and append any other query params used by imageresizer.net
context.Response.Redirect(path);
}
else
{
// return error response
}
}
}
参考图片:
<img src="/Image.ashx?id=1&w=100" />
我的问题是,我这样做了吗? 我正在考虑像客户端缓存这样的问题。 另外,使用Redirect做一个额外的请求(但这个是我现在最不关心的)。
答案 0 :(得分:-1)
如果您可以使用缓存标头以便不需要重定向,则可以使用ImageResizer提供的Config.Current.Rewrite
事件,或使用通用URL重写解决方案来简单地解析和查找文件名。
这将消除到服务器的往返 - 并且记住,重定向被缓存,因此除非您使用缓存指令解决问题,否则您将遇到相同的问题。
此外,如果你为每个请求点击数据库,请确保有适当的缓存。