我正在使用 grails资源插件。在客户端上,我使用 require.js 来获取js。
我的require.js配置-
baseUrl: '/js/lib',
启用资源插件后-
因此,我使用-禁用了缓存资源插件-
grails.resources.mappers.hashandcache.excludes = ['**/*.js']
和新的require.js配置-
baseUrl: '/static/js/lib',
urlArgs: "bust=" + application_version,
删除缓存的资源解决了重定向问题,但是还删除了为js文件设置的expires header ,导致浏览器根本不缓存js文件。
我如何仅在缓存资源中禁用名称哈希,并保留其设置的过期标题。
否则,是否可以使用Grails的任何插件来设置这些 header ,并且它们可与Resources插件配合使用。
我正在使用 Tomcat 和 Haproxy 来提供内容。
最佳答案
我认为最好的解决方案是将哈希的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"/>
关于caching - 在Grails中,禁用名称哈希,但保持hashandchange资源插件的过期 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21909960/