तोड़ने के बिना एएसपी.नेट एमवीसी में [कंप्रेसफ़िल्टर] का उपयोग कर सकता हूं। मैं डोनट कैशिंग के साथ काम करने और मुद्दों में चलने के लिए [CompressFilter] प्राप्त करने की कोशिश कर रहा हूं।क्या मैं डोनट कैशिंग
क्या होता है कि पूरा पृष्ठ कैश हो जाता है न केवल डोनट। मैं उपयोग कर रहा हूँ CompressFilter
के लिए स्रोत नीचे है। मैंने इसे से का उपयोग OnActionExecuting()
के बजाय OnResultExecuted
का उपयोग करने के लिए बदल दिया क्योंकि मुझे कुछ एक्शन रिसेट उप-वर्गों को कैशिंग से बचने के लिए परिणाम के प्रकार तक पहुंच की आवश्यकता थी।
OutputCacheAttribute
के लिए वास्तविक MVC v1 स्रोत कोड ऐसा लगता है कि यह भी OnResultExecuted()
उपयोग कर रहा है को देखते हुए, लेकिन मुझे लगता है न कि तथ्य सीधे संघर्ष खड़ी कर रहा है।
मुझे पर्याप्त जानकारी नहीं है कि प्रतिस्थापन कैशिंग कैसे समझता है कि यह किस तरह से व्यवहार करता है। मुझे लगता है कि यह कहना उल्लेखनीय है कि यह किसी भी तरह के दूषित प्रदर्शन के साथ खत्म नहीं होता है। यह सिर्फ व्यवहार करता है जैसे कोई डोनट नहीं है!
ऐसा लगता है कि मुझे कैशिंग को संभालने के लिए किसी प्रकार के IIs प्लग-इन का उपयोग करना होगा, जिसे मैं वास्तव में करना चाहता था, लेकिन ऐसा लगता है कि मुझे डोनट कैशिंग की भी आवश्यकता है।
मैं वास्तव में यह जानना चाहता हूं कि इसका प्रभाव क्यों है, लेकिन यदि संभव हो तो समाधान भी बहुत अच्छा होगा।
public class CompressFilter : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
// dont encode images!
if (filterContext.Result is ImageResult)
{
return;
}
string acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding)) return;
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("GZIP"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
+1:
कृपया इस पढ़ें। –
@jordan धन्यवाद! मेरी इच्छा है कि मुझे यह समझने में एक घंटा नहीं लगाया गया कि बेवकूफ [कंप्रेसफिल्टर] विरोधाभासी था। मैं डोनट कैशिंग विफल होने के कारण के रूप में हर संभव चीज की जांच कर रहा था और वास्तव में यह चाहता था कि यह इस उपयोगी फ़िल्टर को इंगित करने के लिए –
+1 समस्या नहीं थी। धन्यवाद! – jao