1

在很多情况下,您必须动态创建 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">

维基百科

<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 文件并将其发送给客户端。

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

4

1 回答 1

2

您有多种可能性:

  • 可以生成 CSS 文件并将其存储在服务器的文件系统中以利用缓存。
  • 您可以根据参数化的 GET 请求生成 CSS。在这种情况下,浏览器通常会缓存响应,但每个浏览器第一次都会在服务器端处理 CSS。顺便说一句,如果您查看 ASP.NET 技术,您会发现那里有一些名为“主题”的东西,其中包括各种 CSS 文件集和服务器端属性。它们是在服务器端处理的,微软似乎并不为此感到难过。
  • 你可以在你的静态 CSS 文件中准备一堆 CSS 类(我相信字体的数量不是很多,你不能填充一个 CSS 文件)。至少 class 属性允许使用多个值。
于 2013-08-11T11:13:58.347 回答