为什么简单地将PHP变量用于动态样式表?

时间:2013-08-18 15:02:28

标签: php css sass less

我一直在阅读有关动态样式表的内容,并且偶然发现了几个选项,包括sass和less。但我的问题是为什么不将我的stylesheet.css转换为stylesheet.css.php并简单地使用php变量。然后,我避免了与所有这些其他方法相关的所有依赖性问题。

我是否通过这种方式忽略了一些严重问题?

3 个答案:

答案 0 :(得分:5)

有代码重用的论点:当编写PHP代码来生成CSS时,你有效地复制(一些)sass之类的东西背后的逻辑。当有广泛使用,经过测试和完整的替代方案时,为什么会这样做?

另一件事就是表现。标准CSS文件由您的Web服务器提供,其中包含有关浏览器缓存的标题。您的浏览器每次都不会下载相同的CSS文件,它只是从浏览器端缓冲区获取。默认情况下,PHP根本没有缓存(你通常不希望它)。这意味着,默认情况下,PHP生成的CSS不会被缓存,从而导致服务器上的额外负载以及客户端的额外等待时间。虽然其中一些可以解决(包括生成CSS的PHP代码中的理智标头输出),但其中一些不能(例如,启动PHP的Web服务器的开销)。

答案 1 :(得分:2)

  

我是否通过这种方式忽略了一些严重问题?

我在CDN上托管所有静态资产,您也应该这样做。 CDN不做PHP。

另外:缓存,运行时性能,缩小

答案 2 :(得分:2)

内联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文件,你必须将输出保存到静态文件,如{ {1}}。

在保存到“stylesheet-processed.css”文件之前,需要解析SASS和LESS。您的PHP文件也是如此,您可以将其执行并将输出保存为静态“.css”文件,就像其他语法一样。

解析CSS文件是一种非常常见的做法,广泛用于许多网站和大多数知名网站。通常通过缩小(约25%保存)CSS代码,将多个文件合并为一个(较少的HTTP请求)和gzip(约80%保存)生成的文件来完成increase site's performance

以下是如何在名为.css的文件中使用PHP变量并将结果保存到stylesheet.php的示例:

stylesheet.css

将上述PHP代码放入名为“<?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); ”的文件中,并通过Web浏览器访问该文件,以创建或更新生成的静态CSS文件。

然后在您的HTML代码中,您将包含parse-css.php而不是stylesheet.css

您可以改进解析器以使其缩小CSS代码,例如使用CSSMin PHP类。