Cornerstone的轮播不适用于客户的设计,因此我构建了一个自定义英雄组件,该组件已包含在多个自定义页面模板中。为了允许客户端手动更新图像,我将英雄图像设置为使用{{cdn}}
车把帮助器将图像从WebDAV中拉出。
例如background-image: url('{{cdn "webdav:img/home-hero.jpg"}}');
我们现在遇到的问题是,因为CDN在服务器上缓存了该站点的资产文件,所以当我的客户端通过WebDAV更新home-hero.jpg
时,服务器无法知道,因此它继续使用旧版本的home-hero.jpg
。
我的客户是否有办法强制重新缓存资产或完全绕开资产?我尝试使用imbypass
参数(webdav:img/home-hero.jpg?imgbypass=on
),但这显然只用于未优化但已经缓存的图像。
答案 0 :(得分:1)
一种解决方案是将随机查询字符串附加到图像src URL以防止缓存。如果您正在开发Stencil主题,则最简单的方法是使用{{moment}}帮助程序来生成日期字符串,以确保每次都能获得唯一的值。
<img src="/content/home-hero.jpg?{{moment}}"/>
将呈现为:
<img src="/content/home-hero.jpg?2018-08-23T00:00:00-05:00">
有关使用查询字符串防止缓存的更多信息:https://css-tricks.com/strategies-for-cache-busting-css/