【发布时间】:2009-11-24 10:32:28
【问题描述】:
我正在编写一个 MVC 应用程序,它提供用户上传图像的转换版本(旋转、裁剪和加水印)。一旦指定了转换,它们就不太可能改变,所以我想积极缓存生成的输出,并尽可能高效地提供它。
转换选项存储在数据库中,并由图像服务器用于按需创建图像;只有原始上传文件被永久存储。在本地目录中缓存生成的图像允许 IIS 7 在不触及 ASP.NET 进程的情况下拾取它们,即通过匹配路由。 images/ 中的静态图像优先于动态 MVC 路由 /images/{id}.jpg。
此时我担心的是用户何时实际更改了转换选项——图像需要重新生成,但我想避免手动删除它们。我在数据库中存储了一个最后修改的字段,所以我可以将该时间戳附加到 URL,例如http://images.example.com/images/153453543.jpg?m=123542345453。如果缓存由 ASP.NET 进程处理,这将起作用,这可能会通过参数 m 改变输出缓存,但鉴于我需要提供大量图像,我宁愿避免这种情况。
如果满足某些条件,是否有一种智能方法让 IIS 丢弃静态文件?
【问题讨论】:
标签: asp.net-mvc model-view-controller image