Вчера я активировал сжатие на своем сайте, например:
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
string encodings = app.Request.Headers.Get("Accept-Encoding");
if (encodings == null)
return;
string url = app.Request.RawUrl.ToLower();
if (url.Contains(".js") || url.Contains(".aspx") || url.Contains(".css") || url.Contains("ajax.ashx"))
{
Stream baseStream = app.Response.Filter;
encodings = encodings.ToLower();
if (encodings.Contains("gzip"))
{
app.Response.Filter = new GZipStream(baseStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
else if (encodings.Contains("deflate"))
{
app.Response.Filter = new DeflateStream(baseStream, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
}
}
Прошлой ночью люди жаловались на то, что стили сайта были сломаны. Я пробовал сайт в Firefox и Chrome и получал ту же проблему, пока не сделал принудительное обновление, очистив кеш.
Этим утром я открыл Safari, чтобы посмотреть, как он выглядит в этом браузере, и проверил сохраненные таблицы стилей. Вот раздел верхней строки:
���`I�%&/m�{J�J��t��`$ؐ@�������iG#)�*��eVe]f@�흼��{����{����;�N'���?\fdl��J�ɞ!���?~|?"�~+M�m�?��{�7y����l]�餮���N���̛�x�Ϋ�Q�cMVg��
Я думаю, что либо Safari пытался распаковать что-то, что не было сжато с самого начала, либо он получил сжатый файл и не декодировал его.
Это разовая проблема, которая будет устранена, как только посетители моего сайта очистят свой кэш, или я допустил ошибку при написании своей функции HttpCompression?