我正在使用 grails资源插件。在客户端我使用 require.js 来获取js。
my require.js config -
baseUrl: '/js/lib',
启用资源插件 -
所以我使用 -
禁用了缓存资源插件grails.resources.mappers.hashandcache.excludes = ['**/*.js']
和新的require.js配置 -
baseUrl: '/static/js/lib',
urlArgs: "bust=" + application_version,
删除缓存资源解决了重定向问题,但也删除了为js文件设置的expires标头,导致浏览器根本不缓存js文件。
如何仅在缓存资源中禁用名称哈希并保留其设置的过期标头。 否则,是否有Grails的插件我可以使用它来设置这些标题,它们与Resources插件一起使用。
我使用 Tomcat 和 Haproxy 来投放内容。
答案 0 :(得分: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"/>