[英]Build and Rebuild CSS data uris with php
整個數據URI廢話確實會很快變老,但是在那之前,我至少要在bandwagaon上跳一圈。
因此,我有一些要更新的CSS文件,以使用數據URI而不是遠程位置。 我當時想我可以使用一些PHP和regex進行編程,盡管它不像我之前看到的數據URI重定向想法那么聰明和透明,但是它將提供一個按鈕“ rebuild”選項來修復將來的問題文件或更新。 但是后來我陷入了精神障礙。 這里是想法:
Fix-URI腳本遍歷存儲在適當位置的所有css文件,並摸索為url(".*")
(稍后添加一些模糊性)
腳本確認文件是本地文件並且存在並將內容嚼入數據uri
腳本用新數據uri替換找到的url。
完成后,腳本將保存更新的文件等。
但是,當然,在我看來這只能工作一次。 之后,該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.