我正在使用Grails 2.5.0上的Grails Asset Pipeline 2.2.5插件(两者的当前2.x版本)。
我正在从Amazon S3提供静态HTML,JS,CSS和图像文件(稍后可能会迁移到CloudFront,但这不应该影响这个问题),并且我从Grails服务器提供由控制器支持的REST端点。 / p>
例如,如果我有一个包含img
元素的静态HTML资源,其src
属性值是静态图像资源的URL,我该如何使URL包含正确的缓存摘要文件名中的指纹?
我不应该在运行时运行任何Groovy / Java / JavaScript来获取正确的URL,包括缓存摘要;我应该能够在构建时计算它们,并在构建时以某种方式在静态文件中写出URL,包括缓存摘要。
以下任何一项工作?每个选项后面都有一个预构建代码的示例。对于所有选项,对于缓存摘要1234567890abcdef
,输出应为:
<img src="abc-1234567890abcdef.jpg"/>
Asset Pipeline是否足够智能,可以在HTML中查找静态资产URL并自动重写它们?我已经验证了Asset Pipeline会重写CSS文件中的相对URL,并在文件名中插入缓存摘要,但我还没有办法让它重写HTML文件中的URL。
<img src="abc.jpg"/>
我是否可以添加一个占位符以使Asset Pipeline自动插入缓存摘要?
<img src="abc%cache-digest-placeholder%.jpg"/>
我可以使用其他格式,例如GSP或GTPL(尽管GTPL似乎只适用于JS&amp; CSS,而不是HTML),以某种方式在构建时找出图像的URL而不是在运行时(通常在运行时评估GSP,但这不是确定静态文件的缓存摘要所必需的;它应该在构建时知道)
<img src="${assetPath(src: 'abc.jpg')}"/>
如果要重写URL以包含缓存摘要很困难,如何关闭将缓存摘要插入资产名称?