将html数据缓存在文本文件中是个好主意吗?

时间:2010-01-30 11:41:30

标签: asp.net caching

我们正在编写门户网站,就像我们在Db fro Modules中存储html数据的每个门户网站一样。  所以我认为我可以将每个模块缓存在文件中。我使用OnLoad事件检查此模块是否有缓存文件,使用该文件,否则创建缓存文件:

if (!IsPostBack)
  {
   string Path = AppDomain.CurrentDomain.BaseDirectory + "\\Cache\\Modules\\" + ModuleId + ".dat";
   if (File.Exists(Path))
   {
    Controls.Clear();
    Literal ltCache = new Literal();
    ltCache.Text = File.ReadAllText(Path);
    Controls.Add(ltCache);
   }
   else
   {
    base.OnLoad(e);
    StringBuilder SB = new StringBuilder();
    StringWriter SW = new StringWriter(SB);
    HtmlTextWriter htmlTW = new HtmlTextWriter(SW);
    //this.Visible = true;
    this.RenderControl(htmlTW);
    File.WriteAllText(Path, SB.ToString());
    //this.Visible = false;
   }
  }

但我知道我怀疑这是个好主意。 你怎么看?从文件中检索数据会比从DB中检索数据更慢吗?

3 个答案:

答案 0 :(得分:3)

由于您使用的是.NET Framework,因此您应该使用众多.NET缓存功能之一。

您可能需要查看以下文章,了解有关该主题的一些提示:

答案 1 :(得分:1)

如果你希望它有合理的机会成为数据库的改进,你应该把它缓存在内存中。

数据库是基于磁盘的,具有内存缓存,因此如果您将其缓存在磁盘上,只有当您的文件恰好位于内存中的磁盘缓存中时才会更快。由于数据库缓存比磁盘缓存大很多,因此基于磁盘的缓存很可能会使其变慢。

答案 2 :(得分:0)

文本文件不会很大,所以最好将它们存储在数据库中