1

我在 CMS 上工作,我希望能够通过管理控制面板添加 CSS。

当我添加 css 时,我应该将它附加到我拥有的样式表的底部,还是最好将数据添加到数据库,然后使用处理程序获取它。

在我看来,他们似乎都有优势。

写入文件:
很简单,只需要很少的代码
文件是可移植的,可以像任何其他css文件一样复制

写入数据库:
我有更多控制权
我只能加载每个文档所需的类

4

3 回答 3

2

我会修改 CSS 文件本身。在整个站点中使用动态 CSS 会导致您出现问题,因为样式表会被缓存,因此最好将所有样式放入文件中并允许本地缓存来加速页面,而不是尝试制作大量小的 CSS 文件。

将每个规则存储在数据库中并使用该信息创建 .css 文件不会有任何害处 - 这比解析 CSS 文件中的字符串并找到插入点要容易,但请确保您只编写 CSS 文件当有变化时。如果您按需执行,您将不必要地不断地访问您的数据库。

于 2009-03-16T11:35:30.667 回答
2

在前世做过这两件事后,我认为答案取决于谁在维护 CSS。

如果它是非技术用户管理一些简单样式的简单界面,我会将其存储在数据库中,但作为结构化数据,而不是原始 CSS,并在运行时自行生成 CSS。但是,正如 Sohnee 所提到的,您需要确保不是为每个请求都生成它,因为这将是不必要的开销 - 您应该生成一个平面文件,或者有效地缓存。

如果它是 Web 开发人员类型的人的界面,他们了解文件的概念,并且您想让他们完全访问编写他们喜欢的任何 CSS(并且您信任他们!),那么我会将其存储为文件(如果我是开发人员,我希望它使用我的原始 CSS)。但是,我不会将它附加到现有样式表(假设这是站点的默认基本样式集),我将有一个用于用户定义样式的单独样式表,在页面中使用单独的链接标记调用。这将使站点“代码”与其“内容”分开。还要注意 Zhaph - Ben Duguid 在这里所说的关于通过向 URL 添加某种版本参数来确保浏览器不缓存旧版本的内容。

写入数据库:我有更多控制权我只能加载每个文档所需的类

我想说只加载每个文档的类通常是一个坏主意。浏览器已针对 CSS 缓存进行了调整,因此使用适当的缓存标头从外部文件调用所有 CSS 几乎总是会更好。

于 2009-03-16T12:03:15.730 回答
1

将样式附加到现有 CSS 的最大危险是,如果浏览器缓存了文件的某个版本,则在浏览器刷新缓存之前,他们将看不到更新的样式。

一种解决方法是在调用样式表的某处包含一个版本字符串(例如(来自 SO)):

<link rel="stylesheet" href="/Content/all.min.css?v=2644">

但是,这意味着您还必须在每次进行更改时更新对文件的调用,这可能是不可能的。

也就是说,如果我要添加的样式经常不能上传新版本的样式表,这可能是我会采取的方法。

于 2009-03-16T11:51:18.070 回答