使动态创建一个css文件

时间:2013-08-11 11:03:48

标签: css dynamic

在许多情况下,您必须动态创建css文件 例如,您可能希望将字体系列更改为基于请求

中的参数的内容

你可以根据参数传递给它动态制作css,并将css文件制作成动态的asp,jsp,php ......

例如在java中:

<link href="MainCss.jsp?param=someFont" type="text/css" rel="stylesheet"> 

然后是MainCss.jsp

body {
font-size:100%;
background:#fff;

<%if ( request.getParameter("param") == "someFon" )%>
  font-family:"Tahoma";
<%else%>
  font-family:"Verdana";

}

我被告知这个解决方案有许多缺点:

  • 它不允许在服务器和客户端上缓存CSS文件
  • 这使得理解和维护页面变得更加困难
  • 每次服务器提供CSS页面时,与将CSS文件作为纯静态文档相比,它必须运行几万个额外的CPU周期。

他们的建议似乎是可以接受的!

但是,我一直在网上寻找并找到许多以某种方式执行上述操作的网站: ebay.com:

<link href="http://gh.ebaystatic.com/header/css/all.min?combo=11&ds=3&siteid=0" type="text/css" rel="stylesheet">

wikipedia.org

<link rel="stylesheet" href="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=ext.gad" />

他们告诉我这些网站也使用纯css而load.php?debuge=false ...只是一个css文件选择器,它将从硬盘中选择一个纯css文件并将其发送给客户端。

这种技术是否正确? 有没有人对我的问题有任何经验?

1 个答案:

答案 0 :(得分:2)

您有很多可能性:

  • 可以生成CSS文件并将其存储在服务器的文件系统中,以利用缓存。
  • 您可以在参数化GET请求上生成CSS。在这种情况下,浏览器通常会缓存响应,但每次浏览器第一次在服务器端处理CSS。顺便说一下,如果你看看ASP.NET技术,你会发现名为“Themes”的东西,其中包括各种CSS文件和服务器端属性的集合。它们在服务器端进行处理,微软似乎并不感到难过。
  • 你可以在静态CSS文件中准备一堆CSS类(我相信那些字体数量不是很大,你无法填写CSS文件)。至少class属性允许使用多个值。