我在数据库中保留了 ID 和上传到服务器上的图像的文件名之间的映射。
这是因为我需要使用 ID 而不是磁盘上的实际文件名来引用 HTML 中的图像(如果图像被替换,很难有一个逻辑来替换对新图像的引用)。
所以我看到的解决方案是有一个处理程序,它根据 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 做一个额外的请求(但这确实是我现在最不关心的一个)。