【问题标题】:Blog Engine .NET with XML Data Storage How is it so fast?带有 XML 数据存储的博客引擎 .NET 怎么这么快?
【发布时间】:2023-04-02 16:46:01
【问题描述】:
我正在寻找一种将博客引擎嵌入到我自己的应用程序中的方法,我对博客引擎算法非常好奇。
这可能不是正确的问题,但是,如何将博客条目数据存储在 XML 文件中,例如具有默认配置的 BlogEngine.Net。随着文件越来越大,它必须每天变慢。
我想知道这背后的算法。是否以不同的方式加载?还是我的时间估计错了?
我知道它是开源的,但我认为最好在这里看到一个讨论,因为其他人可能有同样的想法,这个帖子可以作为参考。
【问题讨论】:
标签:
asp.net
xml
blogengine.net
【解决方案2】:
如何将博客条目数据存储在 XML 文件中,例如
具有默认配置的 BlogEngine.Net。应该越来越慢了
每天都在文件越来越大的时候。
每个帖子都存储为带有 GUID 文件名的单个 xml 文件。
当系统启动或在 30 分钟不活动的情况下回收时,系统会检查所有 xml 文件并将它们加载到系统内存“app_pool”中。
对于在“冷”启动时访问的第一个访问者来说,页面加载通常比之后的访问者要慢。
第二个访问者和其他访问者将体验到比第一个访问者更快的页面加载速度。
之所以快,是因为它存储在内存中,不需要连接到数据库以及访问数据库并返回请求的页面/帖子的往返过程。
当“app_pool”由于帖子/页面过多而开始变满时,它会开始变慢。
预计总共大约有 150 个帖子/页面。
当您总共达到大约 151 个帖子/页面时,您将需要切换到使用 SQL 数据库或除 xml 之外的其他提供程序。
【解决方案3】:
要回答您提出的 XML 问题,通过扩展 ProviderBase 类,您可以将其连接到任何数据库,包括 XML 文件。有关更多信息,请参阅 BlogProvider.cs 类和 Providers 文件夹以及它在 BlogEngine.Core 文件夹中的子文件夹 XmlProvider。
如果你看到 Web.Config 文件,你可以看到下面的代码。
<blogProvider defaultProvider="XmlBlogProvider">
<providers>
<add name="XmlBlogProvider" type="BlogEngine.Core.Providers.XmlBlogProvider, BlogEngine.Core"/>
<add name="DbBlogProvider" type="BlogEngine.Core.Providers.DbBlogProvider, BlogEngine.Core" connectionStringName="BlogEngine" />
</providers>
</blogProvider>
通过将 defaultProvider 更改为 DbBlogProvider,您可以挂钩任何 BlogEngine.NET 支持的 RDBMS。