0

grails resources pluginを使用しています。クライアントでは、require.jsを使用して js を取得しています。

私のrequire.js設定 -

baseUrl: '/js/lib', 

リソースプラグインが有効になっている場合 -

  1. ブラウザは/js/lib/abc.jsのリクエストを行い、約 300 ミリ秒を無駄にします
  2. サーバーに到達すると、/static/2432yi4h32kh4232h4k2h34ll.js にリダイレクトされます。
  3. ブラウザはキャッシュ内でこのファイルを見つけて提供します。

だから私は - を使ってcached-resourcesプラグインを無効にしました

grails.resources.mappers.hashandcache.excludes = ['**/*.js']

そして新しいrequire.js設定 -

baseUrl: '/static/js/lib',    
urlArgs: "bust=" + application_version,

cached -resourcesを削除すると、リダイレクトの問題が解決されましたが、js ファイルに設定されていた expires ヘッダーも削除されたため、ブラウザは js ファイルをまったくキャッシュしませんでした。

キャッシュされたリソースで名前のハッシュのみを無効にし、設定された有効期限ヘッダーを保持するにはどうすればよいですか。それ以外の場合、これらのヘッダーを設定するために使用できる Grails 用のプラグインはありますか。それらは Resources プラグインとうまく連携します。

TomcatHaproxyを使用してコンテンツを提供しています。

4

1 に答える 1

1

最善の解決策は、元の明確な名前ではなく、ハッシュされたjsファイル名をrequire定義に入れることだと思います。

リソースの外部タグを使用して、ハッシュされた名前をエコーできます

<r:external uri="js/custom.js"/>
<script type="text/javascript">
    var urlOfCSSToLoadInJSCode = '${r.external(uri:"css/custom.css").encodeAsJavaScript()}';
</script>
<r:external uri="icons/favicon.ico"/>
于 2014-02-27T13:41:52.243 に答える