سؤال

في PHP ، بشكل افتراضي لا يتم إرسال رؤوس ذات صلة ذاكرة التخزين المؤقت.

HTTP/1.1 200 OK
Date: Fri, 19 Nov 2010 11:02:16 GMT
Server: Apache/2.2.15 (Win32) PHP/5.2.9-2
X-Powered-By: PHP/5.2.9-2
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 26
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

الآن ، نظرًا لأنه لا يقول أي شيء عن التخزين المؤقت بشكل افتراضي ، هل يمكن أن يؤدي إلى قول example.com/index.php تم تخزينه مؤقتًا في بعض المواقف؟

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

المحلول

نعم. على العموم، قد يتم تخزين كل استجابة ناجحة ما لم يكن هناك بعض قيود:

ما لم يتم تقييدها على وجه التحديد بواسطة التحكم في ذاكرة التخزين المؤقت (القسم 14.9) التوجيه ، قد يقوم نظام التخزين المؤقت دائمًا بتخزين استجابة ناجحة (انظر القسم 13.8) كإدخال ذاكرة التخزين المؤقت ، قد يعيده دون التحقق من الصحة إذا كان جديدًا ، وقد يعيده بعد التحقق من الصحة الناجحة.

نصائح أخرى

نعم ، عادةً ما يقوم المتصفح بتخزين بعض الملفات افتراضيًا (عادةً ما تكون الصور و CSS) إذا لم يتم إعداد قواعد على جانب الخادم (انظر مخبأ المتصفح).

يمكنك إعداد رؤوس التحكم في ذاكرة التخزين المؤقت للتحكم في ذلك ، أو تعطيله تمامًا باستخدام:

header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache");

انظر المثال رقم 2 في رأس وقراءة الملاحظة أدناه.

هل يمكن أن يؤدي ذلك إلى قول مثال.

لا ينبغي ، ومع ذلك ، هناك الكثير من التطبيقات (خاصة على الأجهزة المحمولة / وكلاء الأجهزة المحمولة) التي لا تتصرف بشكل صحيح في هذا الصدد.

هناك أيضًا الكثير من المعلومات السيئة حول التخزين المؤقت - "Pragma: No Cime" لا معنى له عند إرسالها من خادم.

لمنع التخزين المؤقت:

header("Cache-Control: no-store, no-cache, must-revalidate"); 

عندما فشل كل شيء آخر - تحقق من الدليل

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