mam zwyczaj ten filtr dla kompres wyjście z moich stron:OutputCache i filtr niestandardowy kompresja gzip
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");
}
}
}
Dostałem kod z książki: Pro ASP.NET MVC Framework V2 (Voice eksperta w. NETTO).
Teraz mam metodę działania takiego:
[OutputCache(Order=1, Duration=300,VaryByParam="*", VaryByContentEncoding="gzip; deflate")]
[EnableCompression(Order=0)]
public ActionResult About()
{
return View();
}
Skąd mogę mieć pewność, że filtr OutputCache jest buforowanie skompresowany treści? Korzystanie z parametru "Zamów", jak w tym przykładzie, będzie wystarczające?
Jak mogę zobaczyć, co dzieje się w pamięci podręcznej?
Pozdrawiam.
UPDATE: Ja testowałem z Skrzypek, najwyraźniej to działa bez względu na to jakiej kolejności użyć na filtrach ... dostanę pierwszą odpowiedź z kodowania gzip i http.302 w następujących wniosków, jeśli klient jest można go buforować, lub więcej http.200 z kodowaniem gzip, jeśli tylko serwer jest dozwolony
Prawdopodobnie jest tak dlatego, że OutputCache jest domyślnie ostatnim filtrem i nie ma sposobu, aby to zmienić. Czy ktokolwiek może to potwierdzić?