2017-11-08 3 views
0

:私はからこの情報を手に入れたところ、私は覚えていないことThymeleafキャッシュおよびセキュリティ私のWebアプリ(春ブーツ+春のセキュリティ+ Thymeleaf)セキュリティ目的のためにI無効キャッシングで

spring.thymeleaf.cache=false 

、それとも真実であれば。 私のウェブサイトにはたくさんの画像があり、それらをキャッシュしたいと思います。あなたは何をお勧めします?

答えて

0

Spring Security – Cache Control Headersを見てください。これは、バイト配列の形式でイメージを返すために使用できるResponseEntityオブジェクトのキャッシュについて説明しています。

Thisも、画像そのものをキャッシュする方法を示していますが、投稿自体は2015年のものですが、一部の部分は依然として関連性があります。

0

実際にはspring.thymeleaf.cacheプロパティはセキュリティとは関係ありませんが、パフォーマンスは向上します。 Thymeleafキャッシュを無効にすると、テンプレートは解析する必要があるときに自動的にリロードされます。サーバー側のテンプレートのホットスワップに関係します。

これは開発中に役立ちます。これは、テンプレートの変更をすぐに確認できるためです。そうでなければ、アプリケーションを再起動する必要があります。

Developer toolsのドキュメントを参照してください。

バージョン4.xの春には、バージョン管理(キャッシュバストメカニズム)を実装するためのいくつかの方法があります(static resource caching)。あなたが静的なリソースとしてあなたのイメージをSpringを介して提供していると仮定すると、これらを調べることができます。

イメージ自体を保護する必要がない場合は、そのように適用されたキャッシュを静的リソースとして提供するだけで十分です。

0

スプリングセキュリティは自動的にすべてのリクエストをキャッシュ "キャッシュ"します。which is by design

しかし、Spring Securityで管理する必要のないイメージの場合、WebSecurityConfigurerAdapterの特定のリソースディレクトリに対してイメージを無効にすることができます(イメージディレクトリは../resources/staticディレクトリにあります)。 )。

@Override 
public void configure(WebSecurity webSecurity) { 
    webSecurity.ignoring().antMatchers(
       "/images/**" 
    ) 
} 

そしてSpring Boot wayあなたが唯一のテンプレートのホットリロードをしたいときには、開発中のThymeleafキャッシュをオフにしたい

spring.resources.cache-period=your value here in seconds 

を追加することです。

テストは、ブラウザレベルでそれらをキャッシュします

curl -X GET -I https://your-site/images/foo.png 

これで動作します。サーバーレベルでキャッシュする必要がある場合は、nginxのようなリバースプロキシを使用できます。

関連する問題