У меня есть этот пользовательский фильтр для сжатия вывода моих страниц:
public class EnableCompressionAttribute : ActionFilterAttribute
{
const CompressionMode compress = CompressionMode.Compress;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
HttpResponseBase response = filterContext.HttpContext.Response;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (acceptEncoding == null)
return;
if (acceptEncoding.ToLower().Contains("gzip"))
{
response.Filter = new GZipStream(response.Filter, compress);
response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.ToLower().Contains("deflate"))
{
response.Filter = new DeflateStream(response.Filter, compress);
response.AppendHeader("Content-Encoding", "deflate");
}
}
}
Я получил код из книги: Pro ASP.NET MVC V2 Framework (голос эксперта в .NET).
Теперь у меня есть метод действия, подобный этому:
[OutputCache(Order=1, Duration=300,VaryByParam="*", VaryByContentEncoding="gzip; deflate")]
[EnableCompression(Order=0)]
public ActionResult About()
{
return View();
}
Как я могу убедиться, что фильтр OutputCache кэширует сжатый контент?Использование параметра «Порядок», как в этом примере будет достаточно?
Как я могу увидеть, что происходит в кэше?
Приветствия.
ОБНОВЛЕНИЕ: я тестировал с Fiddler, очевидно, он работает независимо от того, какой порядок вы используете для фильтров ... Я получаю первый ответ с кодировкой gzip и http.302 в следующих запросах, если клиенту разрешено его кэшироватьили больше http.200 с кодировкой gzip, если разрешен только сервер
Возможно, это связано с тем, что OutputCache является последним фильтром по умолчанию, и изменить его невозможно.Кто-нибудь может это подтвердить?