我正在使用C#设计CMS,需要决定在哪里保存网站的配置设置。还要考虑定义我的基本html模板,然后处理它们服务器端以提前创建页面。
那么服务器读取XML文件或从本地数据库查询相同信息通常会更快/更少开销呢?
答案 0 :(得分:10)
我似乎不太可能这会成为您代码中的瓶颈。您经常计划阅读配置设置?配置通常相当小,并且不经常读取。关于在何处以及如何存储它有更重要的事情要考虑:
引导:您可能依赖于您的应用程序可以访问本地文件系统,并且您可以对配置文件名进行硬编码...但是如果您的所有配置都在数据库中,那么您在哪里配置哪个数据库交谈?
易于调整和部署:手动编辑服务器上的配置文件可能比在数据库中进行更改更快......但如果你有多台服务器,那么你呢?想要调整每一个文件吗?
简单的代码读取/处理配置:您的配置会是什么样的?它是自然分层的吗?如果是这样,XML可能是一个很好的选择。如果它更像是一组名称/值对,那么一个简单的表是一个很好的选择。当然,您可以将XML存储在数据库中 - 您不 将存储位置和存储格式决策绑定在一起。在数据库上编辑XML文档可能比编辑XML文件或更改单个值更难......但是使用这类工具可以让生活更轻松。
答案 1 :(得分:3)
仅用于服务器设置 - 真的无关紧要。你只会读一次它们。即使需要几秒钟,仍然是不可察觉的。
首先测量,然后优化。
答案 2 :(得分:2)
一根绳子有多长?我可以编写一个比从XML文件中读取相同数据要慢得多的数据库查询,但我也可以编写一个比查阅数据库要慢得多的XML文件。
我会说如果你显示“大部分”静态内容并且你担心性能,那么以你认为最简单的方式实现它可能是一个更好的主意,然后使用缓存机制来制作它的性能 - 这样,第一次访问可能会“慢”,但后续访问会更快,更快。
通常,如果您要生成HTML内容,请将已完成的HTML写入磁盘并将其发送到浏览器,而不是在后续请求中从数据库/ XML文件中填充它。如果您有后端进程,只要对内容进行更新,就会删除缓存的文件,然后服务器可以自动检测文件何时不存在并再次重新生成。
答案 3 :(得分:1)
这取决于您将用于访问数据的策略。
如果你去数据库路线,你打算缓存你的结果吗?如果你经常从数据库中提取细节,可能会有很多网络喋喋不休。
就简单性而言,您可以使用Linq来与数据源无关。
更快? 一旦内存在内存中就没有区别了。正如另一张海报所指出的,配置信息通常是相当静态的。为什么不使用分析器来创建控制台应用程序并量化差异。
答案 4 :(得分:0)
如果您最重要的一点是速度,那么请使用数据库。 xml非常慢。
但是, 如果您的数据非常“复杂”或具有许多不同的关系和属性,请考虑使用xml
答案 5 :(得分:0)
我这里默认使用数据库。 它更快,需要更少的代码。