سؤال

لقد جربت العديد من الطرق للحصول على IE8 لإعادة تحميل صفحة ولكن فشلت. أي فقط يستمر في استخدام ذاكرة التخزين المؤقت الداخلية دون أن تسأل خادم الويب.

أنا أرسل الرؤوس التالية من خادم الويب الخاص بي:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

إنها مجرد واحدة من العديد من المجموعات التي جربتها.

كيف أجعل IE جلب الصفحة في كل مرة (دون إجبار المستخدمين على إيقاف التخزين المؤقت داخل IE)؟

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

المحلول

الطريقة الصحيحة هي إرسال رؤوس HTTP هذه في الرد:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

استخدامها يجعل كل شيء يعمل في IE دون أي تعديلات أخرى.

نصائح أخرى

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

مجرد تحديث سريع, ، إذا كنت تقوم بنشر البيانات على الخادم ، فسوف تتخطى ذاكرة التخزين المؤقت وتحميل البيانات الجديدة. ومع ذلك ، إذا كنت تقوم بإصدار طلبات Get فقط ، فسوف تنظر IE إلى عنوان URL وإعدادات خاصة لتحديد ما إذا كنت ستقوم بالانسحاب من ذاكرة التخزين المؤقت أو الذهاب فعليًا إلى الخادم للحصول على البيانات.

الآن إذا كان لدى المستخدم "التحقق من الإصدارات الأحدث من الصفحات المخزنة" التي تم تعيينها على الإطلاق ، فلا يوجد شيء يمكنك القيام به حيال ذلك أقل من إلحاق قيمة سلسلة الاستعلام. نرى KB263070 للحصول على معلومات مفصلة من MS على تلك الخيارات. تُظهر نظرة سريعة من خلال إجابات Microsoft عددًا كبيرًا من الأشخاص الذين كانوا في هذا المجال. الحل الذي يتم تقديمه دائمًا هو أن يقوم المستخدم بتعديل إعدادات ذاكرة التخزين المؤقت.

لذلك ، بالنسبة لك ، سيكون الحل (في مستوى التعقيد)

  1. إلحاق قيمة سلسلة استعلام متغيرة للغاية
  2. أبلغ المستخدمين أنه يجب عليهم تغيير إعداد "التحقق من الإصدارات الأحدث" إلى كل زيارة إلى الصفحة أو تلقائيًا.
  3. تغيير روابطك لتسبب ظهور ما بعد. (يوك)

يختار عدد من التطبيقات إما البند 2 أو البند 1. والسبب في أن 2 له تأثير أقل على قاعدة التعليمات البرمجية بينما يكون للبند 1 أقل تأثير على المستخدمين.

إذا كان هذا موقعًا مسؤولًا ، فأنا أقول إن Go with Option 2 لأنه يجب أن يكون لديك قدر لا بأس به من الرفع على إعدادات سطح المكتب للمستخدمين.

آمل أن أفهم سؤالك ، ربما جرب هذا ، سيوضح هذا:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

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

هناك أيضًا توجيه OutputCache ، إذا كان ما سبق ليس ما تبحث عنه.

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