1

为了让我的项目响应某些内容上下文,我希望我的 CSS 文件分别响应,而不是设置额外的 CSS 文件(添加到 http 请求)或在相应的 php 脚本中解析 CSS(恕我直言:相当混乱)。

CSS 通过 PHP 解析器

现在我可以通过 .htaccess 告诉 PHP 解析器也处理 css 文件。
缺点是:在我当前的项目结构中处理多个 css 文件的开销或破坏结构以仅在一个子目录中激活 CSS 文件的解析。
无论哪种方式,我都可以这样做:

AddType application/x-httpd-php php php4 php3 css

... 与 PHP 脚本作为 CSS 资源

或者我可以将页面元数据中的 php 源链接为 css 源。
可能的缺点:可能是某些浏览器不接受具有不同扩展名的文件作为 CSS 资源...?
无论如何...:

<link rel="stylesheet" type="text/css" href="/style/preprocessed.css.php" media="all">

你有什么建议?

4

2 回答 2

1

<link rel="stylesheet" href="style.php">应该在所有浏览器中都可以正常工作,但请确保在 PHP 文件中设置正确的标题:

header('Content-type: text/css');

我不会将 CSS 文件解析为 PHP,否则您可能会做一些危险的事情:

/* bad.css */
<?php unlink('index.php'); ?>

...管他呢。那不应该发生(并且从事该项目的其他人可能不会期望它)。

理想情况下,您只需预先处理所有 CSS 并链接到最小化的常规 CSS 文件。

于 2014-06-18T16:23:43.507 回答
1

只要资源返回Content-Type: text/css浏览器就会接受它作为 CSS。

如果您想减少 HTTP 流量,请使用YSlow 之类的工具来分析您的网站。它提供了有关如何优化 HTTP 流量的可靠提示。

您可以进行 2 个相对简单的优化:

  1. 启用 gzip 压缩。这会减小文件大小并通常会减少加载时间。
  2. 设置适当的缓存标头。CSS 文件通常是静态的,它们不会从一个请求更改为另一个请求。我个人喜欢将指纹识别作为 CSS 和 JavaScript 等资源文件的缓存策略。

让 PHP 处理 CSS 生成是有好处的,但如果你可以让 Apache 为文件提供服务器,那就更好了。如果您确实想使用 PHP 为它们提供服务,请查看该readfile函数。它允许您以非常低的开销读取和回显文件。


你使用parsing这个词。我认为您实际上并不是指 parsing ,而是诸如serving之类的意思。

于 2014-06-18T16:25:41.587 回答