【发布时间】:2023-03-17 05:28:02
【问题描述】:
我正在用 C# 设计一个 CMS,需要决定在哪里保存站点的配置设置。还考虑定义我的基本 html 模板,然后在服务器端处理它们以提前创建页面。
那么对于服务器读取 XML 文件或从本地数据库查询相同信息而言,通常更快/更少的开销是什么?
【问题讨论】:
标签: c# .net asp.net sql-server xml
我正在用 C# 设计一个 CMS,需要决定在哪里保存站点的配置设置。还考虑定义我的基本 html 模板,然后在服务器端处理它们以提前创建页面。
那么对于服务器读取 XML 文件或从本地数据库查询相同信息而言,通常更快/更少的开销是什么?
【问题讨论】:
标签: c# .net asp.net sql-server xml
在我看来,这不太可能成为您代码中的瓶颈。您计划多久阅读一次配置设置?配置通常相当很小,而且很少阅读。关于存储位置和存储方式,还有更重要的事情需要考虑:
引导:您可能依赖于您的应用程序可以访问本地文件系统,并且您可以硬编码配置文件名...但是如果您的所有配置都在数据库中,您在哪里配置哪个要与之交谈的数据库?
易于调整和部署:在服务器上手动编辑配置文件可能比在数据库中进行更改要快...但是如果您有多个服务器,您会想要调整每个文件?
代码读取/处理配置的简单性:您的配置是什么样的?是天生的分层吗?如果是这样,XML 很可能是一个很好的选择。如果它更像是一组名称/值对,那么简单的表就很合适。当然,您可以将 XML 存储在数据库中 - 您没有必须将存储位置和存储格式决定联系在一起。在数据库中编辑 XML 文档可能比编辑 XML 文件或更改单个值更难……但您总是可以使用此类工具让生活变得更轻松。
【讨论】:
仅用于服务器设置 - 真的没关系。你只会读一次。即使需要几秒钟,也不会引起注意。
先测量,然后优化。
【讨论】:
一根绳子有多长?我可以编写比从 XML 文件读取相同数据慢得多的数据库查询,但我也可以编写查询比读取数据库慢得多的 XML 文件。
我会说,如果您正在显示“大部分”静态内容并且您担心性能,那么以您认为最简单的任何方式实现它可能是一个更好的主意,然后使用缓存机制它的性能很高 - 这样,第一次访问可能会“慢”,但后续访问会快得多。
通常,如果您正在生成 HTML 内容,请将完成的 HTML 写入磁盘并将其发送到浏览器,而不是在后续请求中从数据库/XML 文件中填充它。如果您让后端进程在更新内容时删除缓存文件,则服务器可以自动检测文件何时不存在并重新生成。
【讨论】:
这取决于您要采用的访问数据的策略。
如果你走数据库路线,你会缓存你的结果吗?如果您不断地从数据库中提取详细信息,则可能会有很多网络喋喋不休。
就简单性而言,您确实可以不知道使用 Linq 的数据源..
更快? 一旦这些东西在内存中,就不应该有任何区别。正如另一位发帖人指出的那样,配置信息通常是相当静态的。为什么不使用分析器创建控制台应用程序并量化差异。
【讨论】:
如果您最重要的一点是速度,那么请使用数据库。 xml 很慢。
但是, 如果您的数据非常“复杂”或具有许多不同的关系和属性,请考虑使用 xml
【讨论】:
我在这里默认使用数据库。 它速度更快,需要的代码更少。
【讨论】: