gpt4 book ai didi

zend-framework - 保存doctrine2实体以进行缓存以加快页面加载

转载 作者:行者123 更新时间:2023-12-04 04:26:34 26 4
gpt4 key购买 nike

假设我有一个名为Product的实体,并且每次用户访问产品信息页面时都会加载此实体。通常,我会将对象保存在Zend_Cache(内存缓存)中一个小时,以避免每次请求都碰到db,但据我所知,由于Proxy对象,对于Doctrine2实体来说这是不可能的。

所以我的问题是,如何避免为每个请求从数据库加载相同的实体?

[编辑]

我尝试像这样使用Doctrine Cache

    $categoryService = App_Service_Container::getService('\App\Service\Category');
$cache = $categoryService->getEm()->getConfiguration()->getResultCacheImpl();
$apple = $cache->fetch('apple');


但是我收到以下错误

Warning: require(App/Entity/Proxy/_CG_/App/Entity/Category.php) [function.require]: failed to open stream: No such file or directory in /opt/vhosts/app/price/library/Doctrine/Common/ClassLoader.php on line 163



这与Zend Cache相同,而且由于Proxy类,您无法序列化实体

最佳答案

您有几种选择:

  • 使用教义的built-in result caching
  • 尝试通过Zend_Cache将实体粘贴到内存缓存中。拔出产品时,可能需要将Product合并()到EM中,以便可以取消引用代理。如果您获取任何需要显示产品信息的关联,而您仅在进行读取操作,则该提示可以正常工作。
  • 根本不缓存实体。缓存您生成的所有输出。

  • 编辑:如果您不关心水化开销,使用的是mysql,并且您的产品和关联表不经常更改,则您可能更喜欢仅依靠mySQL查询缓存。这是一个相当钝的对象,但值得一提。

    关于zend-framework - 保存doctrine2实体以进行缓存以加快页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805248/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com