【问题标题】:ASP.NET MVC - Image Compression in Shared Hosting EnvironmentASP.NET MVC - 共享主机环境中的图像压缩
【发布时间】:2014-10-29 22:27:36
【问题描述】:

我有一个基于 ASP.NET MVC 的电子商务解决方案,由于不压缩图像而受到 YSlow、PageSpeed 等的影响。如果我运行自己的 IIS 服务器,我会将其设置为使用 gzip 压缩。但是,我在共享主机上运行我的站点并且无权访问 IIS。有没有使用共享主机完成这项任务的直接方法? 谢谢, 太平绅士

【问题讨论】:

    标签: asp.net-mvc shared-hosting


    【解决方案1】:

    JP - 这是共享主机的一个非常大的问题,您绝对不能在根配置上聚会。但是,好消息是您可以申请ActionFilters 让您摆脱困境。因此,您可以应用一点 GZIP 柔化来确保您的页面以最紧凑的格式传输。

    不久前我在 SO 上回答了一个与此非常相似的问题,详细信息在这里:how to gzip content in asp.net MVC?

    回顾一下,这是我在这个场合的建议。

    public class CompressAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
    
            var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
            if (string.IsNullOrEmpty(encodingsAccepted)) return;
    
            encodingsAccepted = encodingsAccepted.ToLowerInvariant();
            var response = filterContext.HttpContext.Response;
    
            if (encodingsAccepted.Contains("deflate"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
            else if (encodingsAccepted.Contains("gzip"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
        }
    }
    

    在控制器中的使用:

    [Compress]
    public class BookingController : BaseController
    {...}
    

    对于您正在使用的图像类型,它可能适用于您的用例,也可能不适用,但请试一试。尽管如此,有证据表明图像并没有真正从 GZIP 中受益:https://webmasters.stackexchange.com/questions/8382/gzipped-images-is-it-worth

    我认为课程的马,虽然 YSlow 和 PageSpeed 等工具可以指示问题,但最终结果通常最好留给众多设备和格式处理程序进行本地协调(可以肯定的是,某些压缩可能已经无论如何都已被服务器应用,即使这些工具报告了一个问题)。

    回顾一下:

    GZipping 图像不值得。收缩是微不足道的,甚至是负面的,因为图像格式已经做了非常好的压缩工作。尝试压缩 JPG 文件以了解我的意思。

    此外,压缩难以压缩的数据会占用大量处理器资源,您最终可能会使用更多而不是更少的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 2011-11-02
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多