在Web应用程序中缓存适量的数据 - 数据库还是平面文件?

时间:2009-06-29 16:59:36

标签: database caching rdbms

我正在研究的Web应用程序需要经常解析各种Web资源(HTML,XML,RSS等)。下载后,我需要缓存这些资源以最小化网络负载。该应用程序需要一个非常简单的缓存策略:仅在访问时间超过X分钟后重新下载缓存资源。

我应该:

  1. 将访问时间(例如,上午10:50的6/29/09)和资源本身存储在数据库中。
  2. 将访问时间和唯一标识符存储在数据库中。唯一标识符是存储在本地磁盘上的资源的文件名。
  3. 使用其他方法或第三方软件解决方案。
  4. 基本上,这个问题可以重写为“哪个更适合存储适量的数据 - 数据库或平面文件?”

    感谢您的帮助! :)

    注意:该应用程序在VPS上运行,因此数据库/平面文件的大小限制不适用。

4 个答案:

答案 0 :(得分:1)

取决于平台,如果您使用.NET

答案是3,使用Cache对象,非常适合ASP.NET中的这个

您可以设置时间和依赖项到期时间, 这个doc解释了缓存对象

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5034946.html

答案 1 :(得分:1)

回答你的问题:“哪种方法可以存储适量的数据 - 数据库或平面文件?”

答案是(在我看来)平面文件。平面文件更易于备份,更易于删除。

但是,您有额外的信息未包含在此问题中,主要是您需要访问此存储的数据以确定资源是否已过时。

鉴于这种需要,将它存储在数据库中更有意义。与关系数据库相比,平面文件不适合随机访问和搜索。

答案 2 :(得分:1)

都不是。

查看memcached,了解它是否适​​用于您的服务器/客户端平台。这比基于文件系统/ rdbms的缓存更容易设置和执行,只要您可以节省缓存数据所需的RAM。

答案 3 :(得分:0)

所有提出的解决方案都是合理的。但是,根据我的特殊需求,我选择了平面文件。但奇怪的是,我这样做的原因是其他一些答案中没有提到的原因。平面文件更易于备份和删除对我来说并不重要,DB和平面文件解决方案都可以轻松检查缓存数据是否已过时。我首先使用平面文件,因为在我的中型单盒VPS LAMP架构中,我认为它比第三方缓存或基于数据库的解决方案更快。

感谢大家的想法! :)