3

我们有一个用 Drupal 6 编写的网站。

我们想使用 Drupal 的缓存机制来提高性能,但是当我们打开它时,我们发现了问题,因为我们的站点在每个页面上都显示了会话数据。Drupal 的缓存系统仅适用于静态内容页面,我们的会话数据有效地意味着我们的页面都不是静态的。

为此,我们提出了两种解决方案:

  1. 重写显示会话数据的块,以便它使用 Ajax 加载非静态数据,这样主要的 HTML 内容就是静态的。这样做的缺点是它意味着大量的工作,而且它会减少非启用Javascript 的用户和专业浏览器(即屏幕阅读器)的功能。

  2. 将会话数据移动到一个iframe或类似的位置。这听起来不对,我不想这样做,但我认为它会解决问题。

  3. 或者找到一个替代的缓存系统,它允许我们以一种可以处理每个页面上都有一小块动态数据的方式缓存站点。这是我们的首选选项,但我们无法在找到任何东西方面取得任何进展,因此这里提出了问题。

因此,如果有人对选项 3 有任何建议,请告诉我们。谢谢你。

(ps - 我知道 Drupal 7 确实有一个改进的缓存系统可以帮助解决这个问题,但我们还没有准备好迁移到 D7)

[编辑] 在这方面没有太大进展,所以我会开放给赏金。

我研究了 Ubercart 如何处理类似情况(因为它是最流行的 Drupal 模块之一,并且与我们解决的问题基本相同)。他们通过让购物车信息块在用户未登录时显示静态文本(即“单击此处查看您的购物车”)来解决此问题,并且仅在用户登录时在每个页面上显示动态购物车数据。我们不要觉得这实际上解决了问题;它只是逃避它,这不是我们想要的。但我担心,如果 Ubercart 采取这种方式,它可能会成为唯一的选择。

4

5 回答 5

3

你看过Authenticated User Page Caching (Authcache) 模块吗?它的工作原理与您在上面的选项 1 中描述的类似。

于 2010-12-22T18:45:10.457 回答
2

阿贾克斯块。

比 Authcache 更简单的解决方案是 Ajax Blocks。

http://drupal.org/project/ajaxblocks

效果很好,据我记得它可以很好地处理没有 js 的用户。

于 2011-01-07T01:27:08.000 回答
1

另一种解决方案是使用 ESI 门将您的页面呈现为块的集合。围绕这个有一些项目,我不是专家,但搜索谷歌可以给你一些想法。

PS:D7 也会有同样的问题,缓存也差不多。

于 2011-01-07T18:35:06.133 回答
0

您可能想查看此模块:http ://drupal.org/project/blockcache_alter 。我不确定这是否会完成您正在寻找的内容,但它可能有助于您深入了解块缓存。

此外,这里有很多很棒的性能资源可能会带来一些有用的东西:http: //drupal.org/node/326504

于 2011-01-06T18:06:39.700 回答
0

我的问题非常相似。根据会话设置,正文背景会发生变化。我可以使用 jQuery 向 body 标记添加一个类,但不知道这种性能是否会很好。

我会测试它并报告回来。

于 2011-02-06T20:47:59.490 回答