强制资产重新缓存

时间:2018-08-23 02:04:10

标签: bigcommerce

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),但这显然只用于未优化但已经缓存的图像。

1 个答案:

答案 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/