使用XML数据存储的Blog Engine .NET如何快速?

时间:2010-02-17 16:10:22

标签: asp.net xml blogengine.net

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

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

我想知道背后的算法。它是以不同的方式加载的吗?或者我对时间估计错了吗?

我知道它是开源的,但我认为最好在这里看一下其他人的讨论可能会有同样的想法,这个帖子可以作为参考。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

  

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

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

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

对于第一个访问“冷”启动的访问者来说,他们的页面加载速度往往比之后的访问者慢。

第二位访问者和其他人将会遇到比第一位访客更快的页面加载。

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

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

这大约是150个帖子/页面。

当您总共达到约151个帖子/页面时,您将需要切换到使用SQL数据库或xml以外的其他提供程序。

答案 2 :(得分: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。