SASS 文件内链接的缓存清除图像

2024-03-08

我对 Laravel 5.0 相当陌生,但对 PHP 不太熟悉。我一直在使用 Elixir 来编译我的 SASS,从我的资源目录复制图像并通过mix.version防止缓存的功能。

然而,这对于 CSS、图像和 JavaScript 来说非常有效; Elixir 是否也可以缓存我的 CSS/SASS 中链接的图像?当然,对图像进行版本控制很容易,但是有没有办法调整 CSS 以反映新的文件名?

我发现了这一点:https://github.com/trentearl/gulp-css-url-adjuster https://github.com/trentearl/gulp-css-url-adjuster它允许您将查询参数附加到 CSS 文件中的文件路径,这样问题就解决了一半。如果每次 gulp 运行时能够自动更改查询参数,我会很高兴使用它。

关于如何实现这一目标,或者是否可能,有什么想法吗?

我想这样做的原因是我不断开发我的应用程序,并且我使用经常重新排列的大型精灵表,缓存清除是一个要求,如果它可以在 gulp 运行时自动执行,那将为我节省很多时间和精力。

Thanks


使用@Amo 的答案作为灵感,我最终使用的解决方案是mixin,它利用了unique_id()函数生成随机值。这避免了必须定义自定义SASS函数,所以它更简单,正如@Amelia 指出的那样,也更干净一些。

混音

@mixin background-cache-bust($url) {
    background-image: #{'url('} + $url + #{'?v='} + unique_id() + #{')'};
}

Example

.sprite {
    @include background-cache-bust('/build/images/common/sprite.png');
}

Result

.sprite {
    background-image: "url(/build/images/common/sprite.png?v=u95ab40e0)";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SASS 文件内链接的缓存清除图像 的相关文章