как можно сжимать данные - PullRequest
3 голосов
/ 28 июля 2011

1. Мой хост использует IIS 7, и IIS не является моим правом доступа к настройкам. Теперь, как сделать web.config или другой файл, который я отправил js / css / aspx, чтобы применить Gzip.

2. Как включить etags для iis6

как включить это для моего сайта это не работает (Yslow)

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
            <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
            <dynamicTypes>
                <add mimeType="text/*" enabled="true"/>
                <add mimeType="message/*" enabled="true"/>
                <add mimeType="application/javascript" enabled="true"/>
                <add mimeType="*/*" enabled="false"/>
            </dynamicTypes>
            <staticTypes>
                <add mimeType="text/*" enabled="true"/>
                <add mimeType="message/*" enabled="true"/>
                <add mimeType="application/javascript" enabled="true"/>
                <add mimeType="*/*" enabled="false"/>
            </staticTypes>
        </httpCompression>
        <urlCompression doStaticCompression="true" doDynamicCompression="true"/>

Редактировать

этот код в gloabal.asax хорошо работает, но все же в Yslow show Gzip не используется ??

void Application_PreRequestHandlerExecute (отправитель объекта, EventArgs e) { HttpApplication app = отправитель как HttpApplication; string acceptEncoding = app.Request.Headers ["Accept-Encoding"]; Stream prevUncompressedStream = app.Response.Filter;

    if (!(app.Context.CurrentHandler is Page ||
        app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
        app.Request["HTTP_X_MICROSOFTAJAX"] != null)
        return;

    if (acceptEncoding.Contains("gzip") )
        return;

    acceptEncoding = acceptEncoding.ToLower();

    if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
    {
        // gzip
        app.Response.Filter = new GZipStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "gzip");


    }
    else if (acceptEncoding == null || acceptEncoding.Length == 0)
    {
        // defalte
        app.Response.Filter = new DeflateStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "deflate");

    }
}

Ссылка на статью

1 Ответ

1 голос
/ 12 августа 2011

Я считаю, что реализация сжатия в коде - неправильный подход; Я понимаю вашу ситуацию и уверен, что это сложно, но я бы подумал о переходе на другой хост.

этот код в gloabal.asax хорошо работает, но все равно в Yslow show Gzip не используется ??

Вы имеете в виду, что он работает при локальном тестировании, а не при развертывании на хосте? Я определенно видел, как некоторые прокси-серверы (например, корпоративные шлюзы) удаляют gzip accept-encoding из провода, так что это может быть чем-то, что стоит рассмотреть.

...