مع Apache Httpd، كيف يمكنني تكوين التخزين المؤقت لأمطال UserAgent معين؟
-
09-09-2019 - |
سؤال
لدي Apache HttpD تم تكوينه لإضافة رأس ذاكرة التخزين المؤقت لطلبات معظم المحتوى الثابت:
ExpiresActive On
ExpiresDefault "access plus 1 year"
# Force JNLP and BSH files to expire immediately so updates are checked for
# and seen (We need this so we see changes in the dynamic content in both)
ExpiresByType application/x-java-jnlp-file "now"
ExpiresByType application/x-bsh "now"
كيف يمكنني تعطيل هذه التخزين المؤقت لأي طلب UserAgent
يحتوي على سلسلة JNLP؟ عندما يأتي الطلب من وكيل المستخدم JNLP (على سبيل المثال "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12
") أنا لا أريد أي Cache-Control
أو رؤوس أخرى متعلقة بالذاكرة التخزين المؤقت على استجابة HTTP.
يمكنني العثور على أمثلة التكوين لعدة أشياء بناء على وكيل المستخدم، لكن لا يمكنني معرفة كيفية تكوين التخزين المؤقت اعتمادا على وكيل المستخدم.
المحلول
لك ExpiresByType
توجيه توجيه يبدو فكرة جيدة ... إذا لم يكن هذا كافيا، فحاول استخدام BrowserMatch
:
BrowserMatch JNLP ua_is_jnlp
هذا يحدد متغير البيئة ua_is_jnlp
إلى بعض القيمة لأي طلب يحتوي رأس وكيل المستخدم على السلسلة JNLP
(هناك أيضا متغير غير حساس للحالة، BrowserMatchNoCase
). ثم يمكنك مسح أي رؤوس التخزين المؤقت مع
Header unset Cache-Control env=ua_in_jnlp
Header unset Expires env=ua_in_jnlp
على الرغم من أنك إذا كنت ترغب في تعطيل التخزين المؤقت بالكامل، فستكون أفضل حالا
Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp