我们正在尝试在我们的 ASP.NET MVC3 网站中以编程方式生成图库缩略图,而不是一直手动执行此操作。
我们正在寻找实现一个功能,检查 TEMP 文件夹是否存在缩略图,否则创建并使用它。
控制器动作是实现这一点的正确位置吗?这个动作应该返回什么?
当画廊页面上有许多缩略图时(有些总是丢失,因为点击次数过多?),我们已经实现了动态图像生成,我们想尝试一种不同的方法。
谢谢。
我们正在尝试在我们的 ASP.NET MVC3 网站中以编程方式生成图库缩略图,而不是一直手动执行此操作。
我们正在寻找实现一个功能,检查 TEMP 文件夹是否存在缩略图,否则创建并使用它。
控制器动作是实现这一点的正确位置吗?这个动作应该返回什么?
当画廊页面上有许多缩略图时(有些总是丢失,因为点击次数过多?),我们已经实现了动态图像生成,我们想尝试一种不同的方法。
谢谢。
我建议您不要自己创建图像/缩略图生成器,而是使用http://imageresizing.net一个具有许多高级功能和插件(cahcing、创建缩略图、动态调整大小等)的 C# 库
这是 NuGet 网址: http: //nuget.org/packages/ImageResizer/
这是我使用的示例配置
<resizer>
<plugins>
<add name="MvcRoutingShim" />
<add name="DiskCache" />
</plugins>
<diskCache dir="~/imagecache" autoClean="false" hashModifiedDate="true" enabled="true" subfolders="32" cacheAccessTimeout="3000" asyncWrites="false" asyncBufferSize="10485760" />
<clientcache minutes="7200" />
</resizer>
我会在一个单独的进程中进行这样的处理,最好是 Windows 服务。
AppDomain 可以被 IIS 回收,并且您的缩略图处理线程可能会在工作中被杀死。这同样适用于部署新版本网站或更改配置时。
监视和维护 IIS 工作进程中的后台线程可能比单独的 Windows 服务更困难。
就个人而言,我会创建一个ImageThumbnailService
或类似的,并通过适当的界面将其公开给您的网络应用程序。这样,您的应用程序只需要向服务请求缩略图,服务就可以担心文件是否存在等,如果不存在则调用其他类来创建缩略图。