0

我目前正在运行一个拥有数百万个动态页面的项目。这些页面的内容是从数据库中收集的,当然数据库也很大,有很多表。由于这些数据库内容不会经常更改,并且为了减少 MySQL 连接和查询对服务器的不必要负担,我实施了 Smarty 缓存,持续时间为 7 天或一个月,具体取决于内容类型。

现在,我的问题是我的单个缓存目录中有大量缓存页面,我不知何故开始认为它可能降低了整体性能。

那么,谁能告诉我在单个目录上拥有数百万个缓存页面的性能问题?或者,我如何管理存储这些缓存文件?或者,我如何正确利用 Smarty Caching 处理大量页面?

4

3 回答 3

0

将您的动态页面 HTML 内容直接提供给用户。你可以用不同的方式做到这一点。有太多方法可以做到这一点,但你有数百万页然后应用这个过程。

  1. 当任何用户首先检查该页面是否存在缓存时
  2. 如果没有,则缓存生成并提供页面
  3. 并且基本缓存文件到期,您可以再次重新生成该缓存文件。

我可以建议您使用的基础库是 PEAR cacheLiet,或者这非常简单,您可以编写自己的代码。但是使用 PEAR cacheLite 的好处是它有许多驱动程序,如文件、数据库和其他缓存系统。

对于缓存目录,您可以根据您的网站类别或您的网站所拥有的标签使用不同的文件。

于 2012-02-07T16:13:21.873 回答
0

您可能需要考虑使用 Varnish 作为反向代理缓存。它非常适合缓存大量静态页面。

于 2012-02-07T17:14:24.067 回答
0

我发现将所有缓存文件放在单个目录中不会产生任何性能问题,除非我们要循环读取文件。

但是,最新版本的 smarty(在撰写此答案时为 3.1.13)存在问题(请参阅smarty 论坛上的讨论)。当清除特定缓存 id 或组的缓存时,smarty 会一一读取所有文件,这需要一些时间才能删除单个缓存。

于 2013-05-19T07:27:44.900 回答