0

我有这种动态创建缩略图的操作方法:

    public ActionResult Thumbnail(int imageId, int width, int height)
    {
        Image image = ImageManager.GetImage(imageId);
        string thumbnailPath;
        if (image.HasThumbnail(width, height))
        {
            thumbnailPath = image.GetThumbnailPath(width, height);
        }
        else
        {
            thumbnailPath = image.CreateThumbnail(width, height);
        }
        /*
        Here, I've done the business of thumbnail creation,
        now since it's only a static resource, I want to let IIS serve it.
        What should I do? Using HttpContext.RewritePaht() doesn't work, as 
        I have to return an ActionResult here.
        */
        return File(image.GetThumbnailPath(width, height), image.MimeType);
    }

调用此方法的 URL 示例是:

/create-thumbnail/300x200/for-image/34

但是,在用这种方法做了缩略图创建业务之后,我想让 IIS 服务缩略图。我应该怎么办?如何将控件返回给 IIS?

4

1 回答 1

1

如果已在文件系统上创建了缩略图,您可以尝试使用以下操作结果类型之一来返回它。

FileContentResult
FilePathResult
FileStreamResult

..edit.. 用关于输出缓存的更相关的答案更新我的回复。

您可能想看看 Asp.net 上的输出缓存文章

基本上前提是,每次在 MVC 中调用一个动作时,它都会再次执行整个函数,这对于像缩略图这样简单的东西来说将是一个巨大的性能损失。相反,如果您使用 OutputCache 装饰您的操作,您可以设置缓存计时器并提高性能。

[OutputCache(Duration = int.MaxValue, VaryByParam = "id;param1;param2")]

VaryByParam 文档

于 2012-06-03T15:52:19.123 回答