如何在 WordPress 中处理动态 CSS?

Xav*_*ver 5 css wordpress dynamic-css

我需要一些用于动态 WordPress 插件的 CSS,并且想知道什么是最好或最常见的方法。我目前正在使用方法二,但在 IE9 上遇到问题。所以我认为动态 CSS 可能有更好的解决方案,并提出了这些:

1.) 包含一个带有钩子的样式wp_head

专业人士:

  • 没有额外的服务器请求

魂斗罗:

  • 根据大小,每页上有很多数据
  • 不太漂亮
  • 不可缓存

admin_url('admin-ajax.php?action=my_css')2.)在链接标签中使用

专业人士:

  • 即时创建 CSS(并使用 Transient API 对其进行缓存)
  • 用途wp_enqueue_style
  • 可通过过期标头进行缓存

魂斗罗

  • 需要加载wp-load.php
  • 不适用于 IE9(为什么?

3.) 创建一个关于更改的 CSS 文件

专业版

  • 快速地
  • 无需加载整个 WordPress ( wp-load.php)

魂斗罗

  • 不是真正动态的
  • 需要为某些文件夹编写规则
  • 可能是过时或缺失导致脚本问题或权限缺失的原因

我不喜欢方法一,因为并不是每个页面都需要该样式,而方法二在 IE9 上不起作用。

我应该选择第三个还是它有什么缺点?

提前致谢!

dou*_*arp 2

由于 PHP 没有内置的持久缓存,您会受到一定的限制。如果您可以保证您拥有memcachedAPC、甚至文件写入访问权限,那么您可以使用这些方法中的任何一种来缓存您的 CSS,并使用密钥检索它。您不需要这样做wp-load.php,因此您的性能将比加载所有插件等有所提高。

也就是说,假设您根据 Microsoft 文章MIME-Handling Change: text/css在输出 CSS 之前进行设置,您的动态 CSS应该可以在 IE9 中工作。header('Content-type: text/css');

话虽如此,您可以尝试 #1 和 #2 的混合方法 - 如果您不能保证拥有文件写入权限,那么听起来 #3 已经过时了。要实现,只需检测user-agent请求浏览器的,并设置一个函数来输出 CSS。如果不是IE9,您可以使用admin_url('admin-ajax.php?action=my_css')挂钩函数包含样式表并调用输出,如果IE9,您可以通过从挂钩调用该函数来将样式表包含在标头中wp_head。这样你就可以为大多数客户端缓存 CSS,并解决 IE 的问题 - 你关于页面大小等的缺点是有效的......但它是 IE9。

只要您能够缓存每个客户端的 CSS,那么您通常只会查看一个额外的请求,该请求wp-load.php不会对性能造成太大影响。

您可以使用以下命令检查 IE9if (false!==strpos('MSIE 9;', $_SERVER['HTTP_USER_AGENT']))