【问题标题】:CSS thru PHP Parser vs. PHP as CSS sourceCSS thru PHP Parser vs. PHP 作为 CSS 源
【发布时间】:2014-08-09 00:56:45
【问题描述】:

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

CSS 到 PHP 解析器

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

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

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

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

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

你有什么建议?

【问题讨论】:

  • 只要您的preprocessed.css.php 文件包含有效的CSS,我看不出有问题;我自己以前也使用过这种方法。

标签: php css .htaccess php-parser


【解决方案1】:

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

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

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

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

...或其他任何东西。那不应该发生(并且从事该项目的其他人可能不会期望它)。

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

【讨论】:

  • 谢谢!设置正确的标题超出了我对此类请求的考虑范围,似乎它增加了一个很好的解决方案。那么,预先最小化css(在这种情况下:即时)将是下一步。更多研究grmpf :D
  • @wesley murch : 错误的 css 是管理服务器的 greta 快捷方式,当您没有连接任天堂进行远程桌面管理时,您已被禁止访问此评论部分 >alert ('band');/actionscript?>
  • @stormdrain 不能在 nentendo 3ds 浏览器上运行 :(((((canu help?var MY_CLICK_BUTTON_3=window.document.getElementById('#MY_CLICK_BUTTON 1); document.body.onClick = function ( ) [ if (alert('please entner youre log in info')) == true (body.refresh.ajaxLoad('invlad logen')) }
  • @WesleyMurch 哦,我明白了,我们能看到问题是弗拉德总是在喝醉时与洛根战斗,所以你要做的是 1) 隐藏伏特加 2) 星期四而不是星期三和 4)当您#MY)CLICK)BUTTON 时,您必须像 1 k 一样拼出 1?那你去
  • @stormdrain 它工作!非常感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!
【解决方案2】:

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

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

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

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

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


你使用了解析这个词。我认为您实际上并不是指解析,而是 serving 之类的东西。

【讨论】:

  • 是的,gzip 运行并且标头是某种“以正确的方式理解”的保险;)现在我将看看 readfile。 (是的!更多的研究!:D)
猜你喜欢
  • 2012-06-22
  • 2012-01-20
  • 1970-01-01
  • 2012-03-10
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多