我有壓縮該自定義過濾器我的網頁的輸出:的OutputCache和一個自定義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");
}
}
}
我從書中代碼:臨ASP.NET MVC框架V2(專家的聲音英寸淨)。
現在我有一個操作方法是這樣的:
[OutputCache(Order=1, Duration=300,VaryByParam="*", VaryByContentEncoding="gzip; deflate")]
[EnableCompression(Order=0)]
public ActionResult About()
{
return View();
}
我怎麼能保證的OutputCache過濾器緩存壓縮的內容?使用這個例子中的「Order」參數就足夠了?
如何查看緩存中發生了什麼?
乾杯。
更新:我曾與小提琴手測試,顯然它的作品無論你在過濾器使用什麼命令......我與gzip編碼的第一反應,並在下面的請求http.302如果客戶端允許緩存它,或更多http.200與Gzip編碼,如果只是服務器允許
可能這是因爲OutputCache是默認的最後一個過濾器,並且沒有辦法改變它。有誰可以證實這一點?