MVC3 OutputCache VaryByHeader = لم يتم تعيين ملف تعريف الارتباط

لدي طريقة العمل التالية:

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)]
public ActionResult Index()

ولكن عند تقديم طلب ، هذه هي العناوين الصادرة:

Cache-Control: private, max-age=60, s-maxage=0
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Fri, 22 Jun 2012 09:56:32 GMT
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT
Vary: Accept-Encoding

لماذا لا تتضمن رأس ملف تعريف الارتباط في Vary؟

لقد حاولت العديد من الاختلافات في إعدادات OutputCache ولكن دون جدوى :(

0

2 إجابة

0
وأضاف

وبالتالي يتم تضمين الاستجابة في رابط "اسم ملف الصفحة" الخاص بـ Andrew Bullock ، والمعروف أيضًا باسم "iis compression overwrites the different header".

ولكن منذ ديسمبر 2013 ، يتوفر إصلاح عاجل (موجود على رابط أندرو بولوك). كالعادة ، قد يتم تضمين هذا الإصلاح في تصحيحات عادية ، لذلك تأكد من أنك ما زلت بحاجة إليه قبل تطبيقه.

وبما أنه "أفضل ممارسة" لتوفير معلومات صريحة من الارتباطات بدلاً من توفير الرابط فقط (في حالة انخفاض الصفحة) ، فإليك ملخصًا:

ضغط ديناميكي IIS الكتابة فوق رأس Vary . يبدو أن هذا ينطبق على IIS من الإصدار 5 إلى الإصدار 8 المتضمنة (عند تجميع المعلومات من مدونة msdn ومن msdn kb). إما تعطيل ضغط الديناميكي لـ IIS أو حاول تطبيق الإصلاح المتوفرة على http://support.microsoft. com/kb/2877816/en-us إذا لزم الأمر. (قد يتم إصلاح هذه المشكلة بواسطة تصحيحات عادية على سلسلة Windows 8.1/2012 R2. يتوفر الإصلاح بدءاً من IIS 7 ، اختبار شخصياً على win7 sp1 ، لم يتم بعد على الملقمات الخاصة بي.)

في حالتي الخاصة ، كان لدي أيضًا مشكلة أخرى: لم تكن asp.net تنبعث منها أي رمز Vary (تم تمكين الضغط أم لا) مع outputCache location لتعيين العميل . وضعه على Downstream "حل" هذه القضية الإضافية. ولكن بالطبع ، هذا له الأثر الجانبي لتغيير Cache-Control من private إلى public . (أصبح الآن قابلًا للتخزين المؤقت على الخادم الوكيل بدلاً من متصفح العميل فقط.)

0
وأضاف