繁体   English   中英

使用php构建和重建CSS数据uri

[英]Build and Rebuild CSS data uris with php

整个数据URI废话确实会很快变老,但是在那之前,我至少要在bandwagaon上跳一圈。

因此,我有一些要更新的CSS文件,以使用数据URI而不是远程位置。 我当时想我可以使用一些PHP和regex进行编程,尽管它不像我之前看到的数据URI重定向想法那么聪明和透明,但是它将提供一个按钮“ rebuild”选项来修复将来的问题文件或更新。 但是后来我陷入了精神障碍。 这里是想法:

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

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

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

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

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

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

一个过去的想法是简单地删除所有已转换的图像,或者至少将它们移到“已转换”目录中。 这样,可以立即发现仍使用普通网址的更新版本或新图像。 然后,我可以对旧的已转换版本的图像进行数据魔术转换,使用grep进行转换,然后在找到的位置替换为新文件。

但是,我担心我正在使它变得比我所需要的更加复杂,并且我缺少一些明显且方便的东西。

快速更新

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

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

css.css->编译/css.css

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

我在自己的网站上执行了以下操作:compiled / v {1-9 +},css1,css2.css

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

版本号确保没有缓存,第二个和第三个结合在一起,并从原始css1.css和css2.css等创建并优化了css文件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM