تخزينُ صفحةٍ مُصيَّرةٍ كاملة يحوّل طلبًا في 400 جزءٍ من الألف إلى طلبٍ في 5. ويعني أيضًا أنّ الجميع ينالون الصفحةَ نفسها — وهو صوابٌ تامّ لمقال، وخطأٌ تامّ لسلّةٍ أو لوحةٍ أو أيّ شيء ينطق باسم الزائر.
القاعدة
لا تخزّن استجابةً إلّا إن كانت ستكون هي نفسها لغريب. فإن توقّف أيُّ جزءٍ منها على هويّة السائل فإمّا ألّا تخزّنها، وإمّا أن تُخرج ذلك الجزء من الصفحة المخزَّنة وتجلبه على حدة.
ما لا يُخزَّن أبدًا
- كلُّ ما وراء تسجيل الدخول، ومنه الصفحةُ التي تُظهر حالةَ الدخول في ترويستها.
- صفحاتُ السلّة والدفع والحساب والطلبات.
- كلُّ ما فيه رمزُ حمايةٍ من تزوير الطلبات — والرمزُ المشترك ليس رمزًا. انظر تزوير الطلبات والنماذج.
- نتائجُ بحثٍ فيها تاريخٌ شخصيّ.
أخبر المخزن بما يتغيّر
# skip the cache when a session cookie is present
fastcgi_cache_bypass $cookie_session $http_authorization;
fastcgi_no_cache $cookie_session $http_authorization;
أثبت أيَّهما نلت
add_header X-Cache-Status $upstream_cache_status;
curl -sSI https://yourdomain.com/ | grep -i x-cache
HIT وMISS وBYPASS في تلك الترويسة تجيب في ثانيةٍ ما لا تجيبه أصيلةٌ كاملة من قراءة الإعدادات. وإن قالت صفحةٌ مسجَّلُ الدخول فيها HIT فقف وأصلحها قبل أيّ شيء آخر.
نصفُ الإبطال
مخزنٌ لا يُفرَّغ أبدًا يعرض سعرَ الأمس. فرّغ عند النشر، واعرف كيف تفرّغ كلّ شيء بيدك حين تغيّر نشرةٌ القوالب.
اختبر وأنت مسجّلُ الدخول، في نافذةٍ عاديّة لا خاصّة. فكلُّ تسرّبٍ من هذا النوع تقريبًا اكتشفه عميلٌ لا المطوّر، لأنّ المطوّر لم يختبر قطّ إلّا خارجًا عن الحساب.
على استضافة EGPHP يُضبَط مخزنُ الصفحات ومساراتُ الدخول والدفع مستثناةٌ سلفًا. وهذا المقال لخادمٍ افتراضيّ القواعدُ فيه قواعدُك أنت.