我一直在阅读有关动态样式表的内容,并且偶然发现了几个选项,包括sass和less。但我的问题是为什么不将我的stylesheet.css
转换为stylesheet.css.php
并简单地使用php变量。然后,我避免了与所有这些其他方法相关的所有依赖性问题。
我是否通过这种方式忽略了一些严重问题?
答案 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的示例:
<html>
<head>
<style>
.class {
color: <?php echo $text_color; ?>
}
</style>
</head>
<body>
</body>
</html>
当PHP变量表示通过管理界面设置的用户设置时,通常使用此技术。一个实际的例子是WordPress主题,用户可以通过主题的后端设置背景或文本颜色。
当谈到外部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类。