3

次のスキームを持つようにSpring MVCを構成しようとしています:

  • 「{context}/resources」で始まるすべての URL はキャッシュ可能である必要があります
  • 他の URL はキャッシュ可能であってはなりません (私の場合、「リソース」によるものはすべて動的ページです)。

最初の部分は、 mvc:resource を使用して非常に簡単です:

<mvc:resources mapping="/resources/**" location="..." cache-period="3600"/>

私は第二部のためにちょっと迷っています。デフォルトでは、「動的リソース」にはキャッシュ関連の情報がないようです(キャッシュ制御ヘッダー、プラグマなどはありません...)。一部のブラウザーは物事をキャッシュする場合があり (FF)、一部のブラウザーはキャッシュしない場合があります (Chrome)。これは理解できます。

と WebContentInterceptor の組み合わせを使用して一部のページをキャッシュ可能にする方法については、多くの投稿があります。

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/foobar/**"/>
        <bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
            <property name="cacheSeconds" value="0"/>
            <property name="useExpiresHeader" value="true"/>
            <property name="useCacheControlHeader" value="true"/>
            <property name="useCacheControlNoStore" value="true"/>
        </bean>
    </mvc:interceptor>
</mvc:interceptors>

ただし、私の場合、一致するパス式がないため、これはそのままでは使用できません (除外は不可能であることが知られています)。

これを表現できる方法はありますか: * mvc:resources がリソースに対して行うこと * 他のすべてのページに対して「何か」を行う ?

私が見ることができる唯一の代替手段は、何かがリソースであるかどうかをチェックするカスタム Interceptor を作成することですが、キャッシュ プロパティをグローバルに定義できないのは少し奇妙に思えます。

ありがとう

4

1 に答える 1