将内容存储在数据库上而不是普通的ASPX或PHP页面上是否存在任何性能问题?

时间:2010-11-08 12:00:13

标签: php asp.net database performance

我和一位同事正在讨论上周建立网站的最佳方式。我们对如何在网站上存储内容有不同的想法。我一直采用的方法是将任何类型的文本或图像链接(不是图像文件)存储到数据库中。这样,如果我需要更改一封信或一个信号,我只需要继续使用该数据库。我不必触及实际的网页本身。

我的同事对此表示同意。他认为存在与从数据库中检索内容相关的性能问题,特别是如果内容的每个字符都来自数据库。当他建立一个网站时,任何不经常更改的内容(如果有的话)将被硬编码到页面上,任何可以更改或定期添加的内容都将来自数据库。

我无法看到这样做的好处,只是从我们每次更改ASPX页面的角度来看,我们需要重新编译网站以上传它。因此,如果一个页面在一个页面上有一个拼写错误的“The”(所以它就像“Teh”),我们必须在页面上更改它,然后重新编译该站点(整个站点),然后上传它。

与我的同事一样,他认为如果一切都来自数据库,那么网站和数据库就会出现性能问题,并且网页对浏览器的整体加载速度会降低。

我们都想知道的是,如果一个网站从数据库中提取所有内容(不是HTML代码,更像是页眉,页脚,链接等内容),它会减慢网站的速度吗?除此之外,如果存在性能问题,哪个更好?一个100%数据库驱动的网站,其中包含性能问题,或者包含硬编码内容的网站,这意味着仅仅为了一个单词或字母更改而花费10/20分钟来编译和上传网站?

我有兴趣看看是否有其他人听说过,或者他们对这个问题有自己的看法?

干杯

2 个答案:

答案 0 :(得分:3)

当然,从数据库而不是直接从文件系统检索信息的速度比慢。但你真的在乎吗?如果您正确设计了应用程序,那么

a)您可以实现缓存,以便不会为每个页面点击数据库

b)无论如何,性能差异都很小,特别是与从服务器向客户端传输页面的时间相比

100%的数据库方法为您的应用程序提供了更多灵活性和功能的潜力。

这是在功能/可用性之前放置缓存/性能注意事项的经典案例。瓶颈很少发生在你期望的地方或者什么时候 - 所以专注于开发一个功能强大的应用程序,然后在需要的时候实现缓存 - 何时需要它以及需要它。

我不建议将模板存储为静态文件是一个坏主意 - 只是性能不应该是进行这些评估的主要驱动因素。例如,使用您的开发工具可以更安全或更容易编辑静态模板。

答案 1 :(得分:0)

对代码中的字符串进行硬编码(除非您计划支持多种语言)。

是不值得的
  • 维护字符串所需的额外代码
  • 增加的复杂性
  • 可能会造成性能损失

你会从按钮中提取字符串“取消”吗? 如果是这样,你会在多个取消按钮上使用相同的字符串吗?或者每个一个? 如果您决定将一个按钮重命名为“取消注册”,您如何识别要在数据库中更新的“取消”?你将被迫建立一个如何处理这个问题的工作流程,在我看来这是不值得的。