在CSS文档中使用PHP是一个不好的想法吗?

3

我创建了一个名为style.php的CSS页面,并在顶部包含了以下内容:

<?php header("Content-type: text/css"); ?>

这会让你感到不安吗?这是一个可怕的想法吗?我这样做是因为我创建了一个CMS,允许管理员控制页面上的颜色(因此style.php脚本查询数据库并获取十六进制值)。

有什么想法吗?

4个回答

5

考虑到缓存和内容类型的注意事项,这并不是一个坏主意,但请思考启动PHP实例(mod_php)或将脚本传递给已经运行的php(fastcgi风格)的成本。你真的想要这样的开销吗?

你最好将你的CSS页面编写成“缓存”版本并保存为静态文件,然后提供该文件服务(或者如果你需要每个页面的灵活性,则选择要包含的样式表;我假设你的主页面已经是PHP了)。


+1个好点。请查看http://stackoverflow.com/questions/487737的评论。还有8个,每天1个。- VonC - VonC

4
这是一个不错的解决方案,只需确保您提供了适当的头信息。请参阅我关于相关主题的博客文章(搜索“重要的头文件”以找到正确的部分)。
还有一件事:
使用缓存时,您可能会遇到这样的情况:用户更改了她想要看到的颜色,但(因为它在客户端缓存中),页面没有更新。为了使缓存无效,请在URL末尾附加?=id,其中ID是存储给用户的数字(例如在会话中),并且每次她更改颜色方案时都会递增。
例如:

实际上,控制缓存的正确方式是使用Etag头,而不是查询字符串。 - David Z
实际上,使用查询字符串是启用缓存并控制缓存过期时间的一个巧妙技巧。有关更多信息,请参见http://developer.yahoo.com/performance/rules.html#expires。 - Jesse Weigert
是的,这不是“适当的RFC方式”,但它比ETags或If-Modified-Since头更容易实现(并且更容易正确实现)。 - Grey Panther

1

假设您使用适当的缓存,因为我想CMS驱动的值可能不会经常更改,所以没有特定的理由避免动态创建CSS包含。


1

这不是一个坏主意。这是一个创造性的想法,有许多好处:

  • 您的用户可以定义值,而无需担心安全问题(解析 CSS 很困难)
  • 您可以强制执行更加视觉一致的皮肤集合(某些灵活性比完全灵活性更好)
  • 编码简单

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接