Tôi có này bộ lọc tùy chỉnh cho nén đầu ra của các trang của tôi:OutputCache và một bộ lọc tùy chỉnh nén 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");
}
}
}
Tôi đã nhận mã từ cuốn sách: Pro ASP.NET MVC V2 Khung (Voice Expert tại. MẠNG LƯỚI).
Bây giờ tôi có một phương pháp hành động như thế này:
[OutputCache(Order=1, Duration=300,VaryByParam="*", VaryByContentEncoding="gzip; deflate")]
[EnableCompression(Order=0)]
public ActionResult About()
{
return View();
}
Làm thế nào tôi có thể đảm bảo rằng các bộ lọc OutputCache là bộ nhớ đệm nội dung nén? Sử dụng thông số "Đặt hàng" như trong ví dụ này sẽ là đủ?
Làm cách nào để biết điều gì đang xảy ra trong bộ nhớ cache?
Chúc mừng.
CẬP NHẬT: Tôi đã thử nghiệm với Fiddler, dường như nó hoạt động cho dù bạn sử dụng thứ tự nào trên bộ lọc ... Tôi nhận được phản hồi đầu tiên với mã hóa gzip và http.302 trong các yêu cầu sau đây nếu khách hàng cho phép cache nó hoặc http.200 với mã hóa gzip nếu chỉ máy chủ được cho phép
Có thể điều này là do OutputCache là bộ lọc cuối theo mặc định và không có cách nào thay đổi điều đó. Có ai có thể xác nhận điều này?