Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php构建和重建CSS数据URI_Php_Css_Version Control_Data Uri - Fatal编程技术网

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

使用php构建和重建CSS数据URI,php,css,version-control,data-uri,Php,Css,Version Control,Data Uri,整个数据URI的胡说八道会很快变老,但在那之前,我会跳上bandwagaon至少一圈 因此,我有CSS文件,我想更新使用数据URI,而不是远程位置。我在想,我可以使用一点PHP和regex以编程的方式实现这一点,虽然它不像我之前看到的数据URI重定向想法那样聪明和透明,但它将提供一个按钮“重建”选项来修复任何未来的文件或更新。但后来我遇到了精神障碍。以下是想法: 修复URI脚本遍历存储在适当位置的所有css文件,并greps表示url(“.*”)的模式(稍后添加了一些模糊性) 脚本确认文件是本地

整个数据URI的胡说八道会很快变老,但在那之前,我会跳上bandwagaon至少一圈

因此,我有CSS文件,我想更新使用数据URI,而不是远程位置。我在想,我可以使用一点PHP和regex以编程的方式实现这一点,虽然它不像我之前看到的数据URI重定向想法那样聪明和透明,但它将提供一个按钮“重建”选项来修复任何未来的文件或更新。但后来我遇到了精神障碍。以下是想法:

  • 修复URI脚本遍历存储在适当位置的所有css文件,并greps表示
    url(“.*”)
    的模式(稍后添加了一些模糊性)

  • 脚本确认文件是本地的并且存在,并将内容转换为数据uri

  • 脚本将找到的url替换为新的数据uri

  • 完成后,脚本将保存更新的文件等

  • 但是,当然,我突然想到这只能起一次作用。在此之后,url将已经是数据uri。我可以添加对“数据”的检查,但对我来说真正的难题是:如何知道数据uri是最新的?如果我将“icon xyz.png”替换为更亮更好的图标,我不仅需要每次都检查每个数据uri,而且还需要知道要与之进行比较的原始文件名,到目前为止,它不是数据uri的标准属性部分

    我不想要的是使用php变量的动态css文件。我还希望尽可能地将解决方案抽象化,即使正则表达式已经过时了

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

    然而,我担心我把事情弄得比我需要的更复杂了,而且我遗漏了一些明显和方便的东西

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

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

    css.css-> 已编译/css.css

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

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

    Web服务器自动负责生成,如果css文件不存在,它将调用generatecss.php来编译和组合css文件

    版本号确保没有缓存,第二个和第三个组合并优化了从原始css1.css和css2.css创建的css文件,依此类推

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