سؤال

ولدي سؤال متعلق تقنيات إبطال مخبأ ... واني اسعى الى تنفيذ آلية لموقع الويب الخاص بي، الذي يبطل تلقائيا مخبأ المتصفح (المغلق، صور ...). أريد أن أكون قادرة على إبطال برمجيا مخبأ المتصفح، كلما قمت بتحديث الموقع (صور التغيير أو أنماط).

وعلى سبيل المثال: من أجل إطلاق سراح الحالي، من بين أمور أخرى، تغيرت المغلق وبعض الصور. في هذه الحالة أريد أن بعد الانتهاء من التحديث، عندما يقوم المستخدم بطلب إلى الموقع، مخبأ المتصفح بلاده للحصول على تبطل تلقائيا، وبالتالي فرض إعادة تحميل للصور وأساليب جديدة. ينبغي أن يتم ذلك فقط من أجل الطلب الأول للعميل ... يجب أن يتم استرداد تلك التالية من ذاكرة التخزين المؤقت (حتى وضع PRAGMA لا ذاكرة التخزين المؤقت غير وارد على الإطلاق).

إليك ما كنت قد حاولت: في BeginRequest معالج الحدث، وأضفت على النحو التالي:         Response.Cache.SetCacheability (HttpCacheability.ServerAndPrivate)؛     Response.Cache.SetETag ( "\" e111293b17594f1487d136ea7e9314ac \ "")؛

وهذا يضع ETAG في رؤوس الاستجابة. أنا أحسب أنه إذا قمت بتغيير هذا ETAG في كل إصدار، وضعه في كل طلب، سيتم إبطال ذاكرة التخزين المؤقت، ولكن يبدو أن الأمر ليس كذلك. كنت رؤوس HTTP لايف لرؤية النتائج وتعيين ETAG بشكل صحيح حتى للاستجابة، ولكن المغلق والصور لا تزال تتخذ من ذاكرة التخزين المؤقت ....

وأي أفكار كيف يمكن تحقيق ذلك، أو إذا كان يمكن أن يتحقق على الإطلاق؟

ويرجع الفضل في ذلك مسبقا!

هل كانت مفيدة؟

المحلول

ولقد واجهت مشاكل من هذا القبيل في الماضي. للأسف لم أتمكن من العثور على طريقة لطيفة حقا لتحقيق ذلك حتى اضطررت إلى الخروج مع الحل. كنت أتعامل فقط مع هذه المسألة لملفات CSS لذلك أضفت معلمة سلسلة استعلام مواقع المعلومات إضافية إلى كل مرجع CSS، على سبيل المثال

 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />

ويحصل يتزايد عدد بناء مع كل إصدار بحيث اضطر المتصفح للبحث عن هذا الملف الجديد. ليس حلا مثاليا، لكنه يعمل دون وجود عوائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top