مع Apache Httpd، كيف يمكنني تكوين التخزين المؤقت لأمطال UserAgent معين؟

StackOverflow https://stackoverflow.com/questions/596520

سؤال

لدي 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top