【问题标题】:Friendly Url MVC4 with ImageResizer带有 ImageResizer 的友好 URL MVC4
【发布时间】:2013-07-02 20:05:11
【问题描述】:

我刚刚安装了 ImageResizer.Net 库来测试调整大小功能。我用 nuget 安装了它,几秒钟后它开始运行,但不是我喜欢的方式。我想要一个像/images/{width}/{height}/name.ext 这样的简洁的url 重写,而不是像?width=100&height=200 这样的旧而丑陋的查询字符串。

我通过Application_Start() 和PipelineConfig.Rewrite 使用正则表达式实现了它,但想知道什么是最好的解决方案,尤其是在速度方面?

【问题讨论】:

    标签: .net asp.net-mvc-4 httpmodule friendly-url imageresizer


    【解决方案1】:

    FriendlyUrls plugin 允许这样做,并且可以用作开发您自己的 URL 语法的起点。但是,我们强烈不鼓励这样做,因为默认语法更接近 REST 原则。

    消除查询字符串可能是当前的时尚,但在您对数据(图像)应用查询/过滤器并且查询词汇量很大的情况下,这往往是一个短视的错误。仔细查看 REST 指南将证实这一点。将图像大小或其他命令放入路径会增加歧义(它是命令还是文件夹?),无法轻松删除(如何仅获取原始图像),并且会弄脏 URI 的清晰度。

    使用查询字符串语法可以轻松构建和修改来自 javascript UI(例如 StudioJS)的命令,并让您保持 RIAPI compliant。

    【讨论】:

    • 谢谢。但是 IIS8 静态文件处理程序和缓存呢? IIS 缓存的最佳语法是什么?
    【解决方案2】:

    这是我放入 ApplicationStart 的代码:

    Config.Current.Pipeline.Rewrite += delegate(IHttpModule sender, HttpContext context, IUrlEventArgs ev)
    {  
      if (ev.VirtualPath.StartsWith(VirtualPathUtility.ToAbsolute("~/images/"), StringComparison.OrdinalIgnoreCase))
      {
        ev.VirtualPath = Regex.Replace(ev.VirtualPath, @"/images/([0-9]+)/([0-9]+)/([^/]+)\.(jpg|png)", delegate(Match match)
       {
         string v = match.ToString();
         ev.QueryString["width"] = match.Groups[1].Value;
         ev.QueryString["height"] = match.Groups[2].Value;
         //ev.QueryString["scale"] = "both";
    
         return string.Format("/images/{0}.{1}", match.Groups[3].Value, match.Groups[4].Value);
    
       });
       context.RewritePath(ev.VirtualPath);
      }
    };
    

    我在下面使用 3.3.3 nuget 包:

    ImageResizer 
    ImageResizer.Mvc 
    ImageResizer.MvcWebConfig 
    ImageResizer.Plugins.DiskCache
    ImageResizer.Plugins.PrettyGifs
    ImageResizer.Plugins.SimpleFilters
    ImageResizer.WebConfig
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 2014-02-26
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2019-11-08
      • 2017-02-14
      相关资源
      最近更新 更多