سؤال

يوم جيد،

انا استخدم cachefilter. لتصفية مسار معين إلى خادمي (الذي يخرج دفق صورة إلى دفق الاستجابة). ولقد قمت بتكوينها في Web.xml الخاص بي كما يلي:

<filter>
    <filter-name>imagesCache</filter-name>
    <filter-class>com.samaxes.cachefilter.presentation.CacheFilter</filter-class>
    <init-param>
        <param-name>privacy</param-name>
        <param-value>public</param-value>
    </init-param>
    <init-param>
        <param-name>expirationTime</param-name>
        <param-value>2592000</param-value>
    </init-param>
</filter>

...
<filter-mapping>
    <filter-name>imagesCache</filter-name>
    <url-pattern>/my/path/*</url-pattern>
</filter-mapping>

باستخدام Firefox الخاص بي، إذا قمت بالوصول إلى عنوان URL الخاص بي عبر شريط العناوين، فإنه يضرب الخادم في المرة الأولى ولكنه يستخدم ذاكرة التخزين المؤقت أثناء المكالمات الناجحة. ومع ذلك، إذا كان عنوان URL داخل صفحتي (أي <img src="..."/> )، يبدو أن ضرب الخادم طوال الوقت.

عدل] بعد بضع اختبار إضافي، لا يعمل الوصول إلى صورتي عبر شريط العناوين طوال الوقت. ولكن يبدو أن التخزين المؤقت يعمل في كثير من الأحيان معها من. حول ما إذا كان ذلك حقا، لست متأكدا.

معلومات إضافية: طريقي هو شيء / بلدي / مسار؟ ثم = بعض واستعلام = سلاسل. لاحظ أنه لا يحتوي على ملحق (أي GIF، PNG، JPEG) ولكن يتم تعيين Mimetype بشكل صحيح (صورة / GIF، Image / PNG، Image / JPEG). لست متأكدا مما إذا كان عدم وجود تمديد أو وجود سلاسل الاستعلام له أي تأثير. (أيضا، ملاحظة أخرى. على الرغم من أن عنوان URL الخاص بي يحتوي على سلاسل الاستعلام، فأنا أستخدم نفس سلسلة URI + Query مرارا وتكرارا مع اختباراتي).

أي أفكار لماذا؟

شكرا

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

المحلول

تريد البحث بشكل خاص عن أي رأس تحكم ذاكرة التخزين المؤقت في طلبك. إذا كان الطلب يقول شيئا مثل التحكم في ذاكرة التخزين المؤقت: لا يوجد ذاكرة التخزين المؤقت أو التحكم في التخزين المؤقت: Max-Age = 0، ثم لا يمكن لتخزين المخزئة أن تخدم نسخة مخزنة مؤقتا. أو إذا كان الاستجابة له رأس تنتهي صلاحيته قريبة جدا في الوقت المناسب، فلا يمكن تخزين مؤقتا لفترة طويلة.

قائمة كاملة من الرؤوس والتفسيرات في مواصفات HTTP 1.1. يرى التخزين المؤقت في HTTP (13) و تعريفات حقل الرأس (14)

ال Firebug المكونات هي طريقة جيدة للتحقق من رؤوس الطلب والاستجابة باستخدام Firefox.

شاهد أيضا كيف تستخدم فايرفوكس. يعادل ضرب زر التحديث عن قول التحكم في ذاكرة التخزين المؤقت: لا ذاكرة التخزين المؤقت - تقول إنك تريد أن تكون نسخة جديدة ممكنة، والتي تأخذك طوال الطريق إلى خادم الويب الخاص بك.

نصائح أخرى

أود أن أستكمل طلب HTTP الذي يتم إرساله - وخاصة رؤوس HTTP التي يتم إرسالها لطلب الصورة. يمكنك استخدام البرنامج المساعد فايرفوكس, و / أو التحقق من الرؤوس في نهاية Servlet (في HttpServletRequest هدف)

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