0

我正在寻找一种将博客引擎嵌入到我自己的应用程序中的方法,我对博客引擎算法非常好奇。

这可能不是正确的问题,但是,如何将博客条目数据存储在具有默认配置的 BlogEngine.Net 之类的 XML 文件中。当文件越来越大时,它必须每天变慢。

我想知道这背后的算法。是否以不同的方式加载?还是我的时间估计错了?

我知道它是开源的,但我认为在这里看到一个讨论会更好,因为其他一些人可能有同样的想法,这个线程可以作为参考。

4

3 回答 3

2

它在启动时将帖子加载到内存中。

于 2010-02-17T16:19:33.050 回答
2

如何将博客条目数据存储在具有默认配置的 BlogEngine.Net 等 XML 文件中。当文件越来越大时,它必须每天变慢。

每个帖子都存储为具有 GUID 文件名的单个 xml 文件。

当系统启动或在 30 分钟不活动时回收时,系统会检查所有 xml 文件并将它们加载到系统内存“app_pool”中。

对于第一个在“冷”启动时访问的访问者来说,通常会遇到比之后的访问者更慢的页面加载速度。

第二个访问者和其他人将体验到比第一个访问者更快的页面加载速度。

它之所以快,是因为它存储在内存中,不需要连接到数据库以及访问数据库并返回请求的页面/帖子的往返过程。

当“app_pool”由于帖子/页面太多而开始变满时,它就会开始变慢。

总共大约有 150 个帖子/页。

When you reach about 151 posts/pages in total you will need to switch to using SQL database or some other provider other than xml.

于 2013-04-10T10:53:50.310 回答
0

要回答您提出的 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。

于 2010-02-17T17:00:54.590 回答