0

我正在使用grails 资源插件。在客户端我使用require.js来获取 js。

我的 require.js 配置 -

baseUrl: '/js/lib', 

启用资源插件 -

  1. 浏览器会请求/js/lib/abc.js浪费〜300ms
  2. 到达服务器后,它将被重定向到 /static/2432yi4h32kh4232h4k2h34ll.js
  3. 浏览器将在其缓存中找到该文件并提供服务。

所以我禁用了缓存资源插件使用 -

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

和新的 require.js 配置 -

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

移除缓存资源解决了重定向问题,但也删除了为 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 回答