在X2 CRM上使用Yii 1.1实现多租户缓存的最佳方法

zbdgwd5y  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(142)

我正在使用X2 Engine CRM进行一个CRM项目。该应用程序内置了基于文件的缓存,在部署为单租户应用程序时运行良好。但是,我在多租户环境中使用该应用程序,其中有一个代码库和多个数据库(每个客户端使用一个应用程序)。
该应用程序有能力为用户定义自定义CRM字段,并添加他们的不同记录的形式。
当用户A创建自定义字段并访问包含该字段的页面时,应用程序会将该表单以及数据模型的HTML缓存在基于文件的缓存中。
因此,当用户B使用不同的数据库访问应用程序时,应用程序会尝试为缓存的HTML提供其数据库中不存在的自定义字段。这会导致错误,并且在我手动删除缓存之前,唯一可以加载应用程序的用户是用户A。然后,应用程序会基于用户B重建缓存,并且一切正常,直到用户A再次加载页面。
在此期间,我已经关闭了缓存以避免这个问题,但我正在尝试决定缓存这个网站的最佳方法。应用程序确实支持Redis和其他缓存,但我不知道这是否能解决这个问题。
我想我需要的是一个为每个子域(即客户端数据库)存储缓存的缓存解决方案,或者一个该高速缓存存储在活动数据库中以便每个用户都有不同的缓存的解决方案。
我在一个带有Debian 10 LAMP堆栈的EC2示例上运行这个程序(使用Maria DB,但迁移到带有Aurora的RDS)。
任何想法都很棒!

ruarlubt

ruarlubt1#

我发现Yii允许你指定不同的缓存配置。将这个转换为CDbCache,现在它会缓存用户数据库中的每个站点。

相关问题