静态页面数据库或文件?

时间:2010-10-27 21:23:08

标签: php

您好 在eshop的CMS中,我正在开发静态页面的其他开发人员,将每个静态页面存储在数据库中。 有一个表单,您可以根据需要添加静态页面。但我认为,不是将内容存储在数据库中存储文件的路径可能是一个更好的解决方案... 你怎么看? 静态内容不会总是很薄。

4 个答案:

答案 0 :(得分:2)

如果您要将数据库的路径存储在数据库中,您也可以将内容存储在数据库中。无论哪种方式,您都必须进行数据库查找。

将所有内容放入数据库的一个优点是,您只需备份数据库,并在知道数据安全的情况下熟睡。如果您的数据分散在数据库和文件系统之间,那么您需要备份并保持同步的两件事。不要低估同步的重要性;你不希望你的数据库和文件系统不同步。

在主键下保存所有内容比管理各种文件混乱的文件系统树要容易得多。如果数据是二进制(例如图像),那么您当然应该使用文件。但如果数据是文本,那么使用数据库会更方便。

如果考虑性能,缓存可能是更好的解决方案。保留数据库中的权威数据,但暂时缓存那些检索成本高昂的东西。但当然,这取决于页面的大小以及页面更改的频率。由于查询缓存和其他技巧,有时数据库可能比文件系统更快。

答案 1 :(得分:2)

从纯粹的速度角度来看,我相信完整的数据库选项会更快。需要多少基准测试,但服务器没有额外的“命中”,因为您已经打开了数据库连接以便首先获取数据。否则,您必须让站点读取文件系统,然后使用PHP来标题(重定向)到所需的页面或字符串替换。

这个论点还有另一面。最终,每个页面都会发生变化。如果你在数据库中拥有它,那么通过WYSIWYG或其他类型的在线编辑器进行编辑会更容易。当然,在您的计算机上弹出一个编辑器并对文件执行相同操作很容易,但是如果您选择继续构建并将其部署到多个客户 - 如果 - 想要编辑其页面,该怎么办?如果您现在花时间将所有内容放入数据库中,那么您就可以进行扩展了。并且,在宏观的计划中,两者之间的时差几乎为零。此外,您可以将其作为“特色”推销给潜在买家。

答案 2 :(得分:1)

我更喜欢将页面内容存储在文件中,特别是如果它们很重。但是,如果有一个现有的解决方案,它的工作原理......我不会改变它,除非它真的显示性能或其他问题。

答案 3 :(得分:0)

通常,人们在(1)静态文件的性能和(2)数据库的数据完整性之间,通过将数据存储在数据库中以保持完整性,并使用在缓存中存储预渲染结果的许多可能性之一来解决这种二元性(无论是平面文件,APC,内存缓存等等。

在一个不断发展且非常受欢迎的项目中,你不能没有缓存,你不能没有数据完整性,所以利用两者就是解决方案。

在数据库中存储缓存有其优点和缺点:

优点:

  • 很容易根据密钥使缓存无效,甚至可能在数据库端的触发器上也是如此。
  • 一个内容来源

缺点:

  • 数据库本身的负担很重
  • 更难以扩展

在大多数情况下,随着数据的变化,您真的希望保持数据库的负载,它正在忙于进行各种修改(插入,更新,删除)。如果您的流程/项目不依赖于最新的可用数据(论坛,博客,评论等),则将缓存存储在另一个位置,以便内存(如上面提到的APC和内存缓存)或平面文件将成为可行的方法谁在乎几秒钟的滞后)。如果你正在建立一个交易系统(信用余额,游戏系统等),那么最重要的,如果有这么重要的一个,那么你就可以选择一个好的数据库,你可以将它集中起来以保持很多服务器的存在。同步。

请记住,虽然磁盘IO成本非常高,但经常访问并且很少更改平面文件就像在任何体面的操作系统的内存中缓存一样,如果你在该系统上有备用内存。给定足够的负载和有限的资源,可用的硬件真正发挥作用,所以没有“银弹”答案。