التخزين المؤقت للرؤوس من PHP
-
26-09-2019 - |
سؤال
في 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");
عندما فشل كل شيء آخر - تحقق من الدليل