0

整个数据 URI 废话很快就会变老,但在那之前,我至少要赶上一圈。

所以我有想要更新的 CSS 文件以使用数据 URI 而不是远程位置。我在想我可以使用一些 PHP 和正则表达式以编程方式做到这一点,虽然它不会像我之前看到的数据 URI 重定向想法那样聪明和透明,但它会提供一个按钮“重建”选项来修复任何未来文件或更新。但后来我遇到了心理障碍。这是想法:

  1. Fix-URI 脚本遍历存储在适当位置的所有 css 文件并 greps 的模式url(".*")(稍后添加一些模糊性)

  2. 脚本确认文件是本地的并且存在并将内容咀嚼到数据 uri

  3. 脚本将找到的 url 替换为新的数据 uri。

  4. 完成后,脚本会保存更新的文件等。

但是,当然,我突然想到这只能工作一次。之后,该 url 已经是 data uri。我可以添加对“数据:”的检查,但对我来说真正的困境是:我怎么知道数据 uri 是最新的?如果我将“icon-xyz.png”替换为闪亮和更好,我不仅每次都必须检查每个数据uri,而且我必须以某种方式知道要与之比较的原始文件名,这不是标准属性截至目前的数据uri的一部分。

我不想要的是使用 php 变量的动态 css 文件。我还想尽可能地抽象解决方案,即使正则表达式马在谷仓之外。

一个通过的想法是简单地删除任何已转换的图像,或者至少将它们移动到“转换”目录。这样,可以立即发现更新版本或仍使用纯 url 的新图像。然后我可以数据神奇地转换旧的已经转换的图像版本,grep ,然后用新文件替换找到的位置。

然而,我担心我让它变得比我需要的更复杂,而且我错过了一些明显和方便的东西。

快速更新

使其尽可能抽象包括避免或至少抵制解决方案,例如 css 注释以反映文件名或注释掉新属性上方的属性等。

4

1 回答 1

0

我的解决方案,不要覆盖而是复制

css.css -> 编译/css.css

更改时,将 css.css 重新编译为已编译/css.css

我在我的网站上做了类似的事情compiled/v{1-9+},css1,css2.css

网络服务器会自动处理生成,如果 css 文件不存在,它会调用 generatecss.php 来编译和组合 css 文件。

版本号确保没有缓存,第二个和第三个是合并优化的css文件,由原始css1.css和css2.css等创建。

但是请记住,css 文件是阻塞的,使用大型 css 文件并不总是一个好主意。

于 2013-09-21T18:57:01.480 回答