Кто-нибудь знает, возможно ли сжать мои исходящие http-данные в IE? Я выполняю запросы ajax на сервер и хочу уменьшить объем трафика, чтобы ускорить работу моего приложения.Исходящие HTTP-сжатие данных
Спасибо, Егор
Кто-нибудь знает, возможно ли сжать мои исходящие http-данные в IE? Я выполняю запросы ajax на сервер и хочу уменьшить объем трафика, чтобы ускорить работу моего приложения.Исходящие HTTP-сжатие данных
Спасибо, Егор
Ниже приведен общий способ создать атрибут сжатия фильтра:
public class CompressFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
HttpRequestBase request = actionContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (!string.IsNullOrWhiteSpace(acceptEncoding))
{
acceptEncoding = acceptEncoding.ToLowerInvariant();
HttpResponseBase response = actionContext.HttpContext.Response;
if (acceptEncoding.Contains("gzip"))
{
response.AddHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("deflate"))
{
response.AddHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
}
Теперь вы можете украсить ваш контроллер с атрибутом [CompressFilter]
. Он добавит заголовок сжатия в ответ для поддерживающих его браузеров, которые IIS заберет. Если вы включили динамическое сжатие, IIS затем выдает сжатые ответы.
Этот код позволяет сжать ответ сервера. Но я хочу сжать запрос. – Egor4eg
AFAIK, ни один браузер не может неявно сжимать запросы запросов. Я полагаю, что вы можете сделать, это найти javascript-библиотеку сжатия и отправить сжатые с клиента данные на сервер и вручную распаковать их там. Вероятно, накладные расходы, которые это будет стоить на клиенте, - это больше, чем время сохранения данных. – Carvellis
да, вероятно, это будет стоить больше времени. Но я должен проверить это. Знаете ли вы какие-либо библиотеки javascript, которые позволяют это делать? – Egor4eg
Вы можете показать, какие данные вы обмениваете? – Neutralizer
Если вы еще этого не сделали, я рекомендую посмотреть, как использовать JSON для обмена данными AJAX. MVC имеет функции, которые делают работу с JSON очень простой. – BradB
Я использую JSON для своих запросов, но иногда он большой (около 60 кбайт). Итак, я хочу сжать его – Egor4eg