簡體   English   中英

為什么簡單地將PHP變量用於動態樣式表?

[英]Why simply use PHP variables for dynamic stylesheets?

我一直在閱讀有關動態樣式表的內容,並且偶然發現了幾個選項,包括sass和less。 但我的問題是為什么不把我的stylesheet.css變成stylesheet.css.php並簡單地使用php變量。 然后,我避免了與所有這些其他方法相關的所有依賴性問題。

這樣做我是否可以忽視一些嚴重的問題?

有代碼重用的論點:當編寫PHP代碼來生成CSS時,你有效地復制了(一些)sass之類的東西背后的邏輯。 當有廣泛使用,經過測試和完整的替代方案時,您為什么要這樣做?

另一件事就是表現。 標准CSS文件由您的Web服務器提供,其中包含有關瀏覽器緩存的標題。 您的瀏覽器每次都不會下載相同的CSS文件,它只是從瀏覽器端緩沖區獲取。 默認情況下,PHP根本沒有緩存(你通常不希望它)。 這意味着,默認情況下,PHP生成的CSS不會被緩存,從而導致服務器上的額外負載以及客戶端的額外等待時間。 雖然其中一些可以解決(包括生成CSS的PHP代碼中的理智標頭輸出),但其中一些不能(例如,啟動PHP的Web服務器的開銷)。

這樣做我是否可以忽視一些嚴重的問題?

我在CDN上托管所有靜態資產,您也應該這樣做。 CDN不做PHP。

另外:緩存,運行時性能,縮小

內聯CSS代碼中使用的PHP變量

在CSS中使用PHP變量有許多優點,其中之一就是您不必學習新語法。 在CSS代碼中使用PHP變量是已經在許多框架,主題和其他與網站相關的腳本中實現的已知實踐。

最常見的用途是內聯CSS 以下是使用PHP變量的內聯CSS示例:

<html>
<head>

    <style>
    .class {
        color: <?php echo $text_color; ?>
    }
    </style>

</head>
<body>
</body>
</html>

當PHP變量表示通過管理界面設置的用戶設置時,通常使用此技術。 一個實際的例子是在WordPress主題中,用戶可以通過主題的后端設置背景或文本顏色。

外部CSS文件中的PHP變量

當涉及到外部CSS文件時,也可以使用PHP變量,但是為了避免PHP在每次檢索時解析CSS文件,您必須將輸出保存為stylesheet-processed.css的靜態文件stylesheet-processed.css

在保存到“ .css ”文件之前,需要解析SASS和LESS。 您的PHP文件也是如此,您可以將其執行並將輸出保存為靜態“ .css ”文件,就像其他語法一樣。

解析CSS文件是一種非常常見的做法,並且廣泛用於許多網站和大多數知名網站。 通常通過縮小(約25%保存)CSS代碼,將多個文件合並為一個(較少的HTTP請求)和gzip(約80%保存)生成的文件來提高站點的性能

下面是一個如何在名為stylesheet.php的文件中使用PHP變量的示例,並將結果保存到stylesheet.css

<?php

// Get the parsed CSS code with the 
$processed_CSS = file_get_contents('http://www.example.com/stylesheet.php')

// Save the processed CSS to a static CSS file
file_put_contents('stylesheet.css', $processed_CSS);

將上面的PHP代碼放入名為“ parse-css.php ”的文件中,並通過Web瀏覽器訪問它,以便創建或更新生成的靜態CSS文件。

然后在HTML代碼中包含stylesheet.css而不是stylesheet.php

您可以改進解析器以使其縮小CSS代碼,例如使用CSSMin PHP類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM