2016-04-07 18 views
2

AbstractJavaScriptComponentを拡張する私のvaadinアプリケーションにカスタムjavascriptコンポーネントがあります。Vaadin AbstractJavaScriptComponent:ブラウザのJavaScriptキャッシングを防止する

@JavaScript({"javaScriptConnector.js", "MyComp.js", "MyCompHtml.js"}) 
public class MyComp extends AbstractJavaScriptComponent { 
..... 
..... 
} 

私はMyComp.jsへの変更を行うたびに、私は変化を見るために私のブラウザのキャッシュをクリアする必要があります。これはアプリを開発するときは大丈夫ですが、アプリが公開されるとユーザーにキャッシュをクリアするように要求することはできません。

ブラウザキャッシュを防止する方法はありますかMyComp.js?私はあなたがjavascript(例えば:MyComp.js?v=1)にクエリ文字列を追加するトリックを認識していますが、私はどのようにvaadin AbstractJavaScriptComponentにそれを行うことができますアイデアはありません。

答えて

3

私は、Vaadinのサーブレット構成のresourceCacheTimeパラメータを利用することにより、これを克服した:

@VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0)

デフォルト値に関してDefaultDeploymentConfiguration.classを参照してください。このリソースを毎回再検証するためにキャッシュを指示

cache-control: public, max-age=0, must-revalidate

0にこの値を設定

は、以下のレスポンスヘッダを付加します。

com.vaadin.server.communication.PublishedFileHandler.handleRequestは、公開ファイルの応答が作成される場所です。ここで問題となるのは、これは公開されているすべてのリソースのグローバル設定であるため、これをカスタマイズする唯一の方法は、公開ファイルハンドラを作成することです。

おそらく、Vaadinは@ Javascript/@ StyleSheetアノテーションに別のオプションを追加して、より具体的なリソースキャッシュ時間を達成することを検討します。

関連する問題