Magento 2:生成基于客户会话的缓存页面

时间:2017-09-22 15:45:56

标签: session magento caching magento2 magento2.1

情境: 在Magento 2与完全缓存的集成中。

我们有两种类型的客户Type 1Type 2。这两类客户都保存在同一客户组下,我们根据customer type属性区分客户。

类型1的客户可以属于不同的部门(1到多个)。登录后首次访问该网站时,他会被重定向到他的部门。

此值保存在客户会话中,在运行时客户可以更改其部门,即在现有客户会话中更新该值。

当我们访问新页面时,我们会获得更新的会话,但如果我们访问之前访问过的页面,我们会从会话中获取旧数据。

尝试了选项:

  • 我们尝试从客户会话工厂而不是客户会话加载数据,但我们仍然面临着这个问题。我们的理解是,保存在客户对象中的数据将作为新数据加载,但由于我们的数据是在客户会话下保存的,因此不会返回最新数据。
  • 对于页面的某些部分,我们使用sections来加载数据,但在该场景中,如果先前访问页面,则在第一次刷新时不会加载正确的数据,在第二次刷新时,数据是装好了。
  • 我们还尝试从AJAX更新会话数据,但这也没有太大用处,因为这些数据没有加载到页面上。
  • 我们也尝试使用上下文变量,但是当我们在保存上下文变量时记录数据时会记录正确的数据,但是当我们尝试获取上下文数据时,没有返回任何数据。即使为每个部门设置了不同的上下文变量,该页面也似乎是从缓存中呈现的。
  • 我们不能使用Cookie,因为这是敏感数据,这将是最后一个选项。

在Magento 1中,我们可以选择通过扩展app \ code \ local \ Enterprise \ PageCache \ Model \ Processor.php来生成新的缓存密钥,

示例

  

如果   (isset($ _ COOKIE [Enterprise_PageCache_Model_Cookie :: IS_USER_ALLOWED_SAVE_COOKIE]))   {$ uri。=' _' 。   $ _COOKIE [Enterprise_PageCache_Model_Cookie :: IS_USER_ALLOWED_SAVE_COOKIE]。   }

Magento 2中是否有类似的选项。如果是,请分享一些参考链接以整合相同的选项。

0 个答案:

没有答案