Yii Framework Forum: 大家是怎么缓存Ar的 - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

大家是怎么缓存Ar的 Rate Topic: -----

#1 User is offline   zerox 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 18-June 14

Posted 23 June 2014 - 01:16 AM

大家是怎么缓存通过AR获得的数据库结果的?
我测试了一下,缓存全部AR结构和仅缓存AR的 attributes 所用的内存比例大概是3:5,感觉挺浪费的
假如我只存 attributes,每次取回来之后通过 populateRecord 方法初始化AR的属性,这样做会有什么问题吗?
0

#2 User is offline   qiansen1386 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 54
  • Joined: 03-May 13

Posted 23 June 2014 - 10:12 AM

View Postzerox, on 23 June 2014 - 01:16 AM, said:

大家是怎么缓存通过AR获得的数据库结果的?
我测试了一下,缓存全部AR结构和仅缓存AR的 attributes 所用的内存比例大概是3:5,感觉挺浪费的
假如我只存 attributes,每次取回来之后通过 populateRecord 方法初始化AR的属性,这样做会有什么问题吗?

AR貌似不缓存啊,缓存的都是数据啊,用Redis和memchace即可。还有一些NoSQL的AR,作为官方扩展加进来的,你也可以考虑存为NoSQL。
0

#3 User is offline   zerox 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 18-June 14

Posted 09 July 2014 - 04:13 AM

View Postqiansen1386, on 23 June 2014 - 10:12 AM, said:

AR貌似不缓存啊,缓存的都是数据啊,用Redis和memchace即可。还有一些NoSQL的AR,作为官方扩展加进来的,你也可以考虑存为NoSQL。


最后还是按原来的想法做了,就是通过 getAttributes 方法取出一个AR对象的属性缓存起来,下次从缓存里取出来之后再通过AR的 populateRecord 和 populateRecords 方法重新生成一个AR对象,还没发现有什么问题
0

#4 User is offline   疯狂的dabing 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 02-April 14

Posted 20 August 2014 - 04:21 AM

AR结构会缓存。还是只存attributes好一点,只存属性的话倒像是2的toArray方法。
早先曾经遇到过这样的问题:
在model中使用了某个widget(CHtmlPurifier,早年被网上流传的小技巧给欺骗了),然后直接在后台缓存了。
然后前台取出并恢复,结果出错了。错误原因是widget会有一个owner,记录着缓存前的controller,当前台还原的时候把后台的controller作为owner恢复了,但是前台并不能访问那个controller。
0

#5 User is offline   yiqing95 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 27-December 10
  • Location:china

Posted 20 August 2014 - 06:47 AM

View Postzerox, on 09 July 2014 - 04:13 AM, said:

最后还是按原来的想法做了,就是通过 getAttributes 方法取出一个AR对象的属性缓存起来,下次从缓存里取出来之后再通过AR的 populateRecord 和 populateRecords 方法重新生成一个AR对象,还没发现有什么问题


你这不就典型体现了时空权衡问题 省时间就浪费空间 省空间就浪费时间 :D
0

#6 User is offline   qiansen1386 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 54
  • Joined: 03-May 13

Posted 09 September 2014 - 03:37 AM

View Post疯狂的dabing, on 20 August 2014 - 04:21 AM, said:

AR结构会缓存。还是只存attributes好一点,只存属性的话倒像是2的toArray方法。
早先曾经遇到过这样的问题:
在model中使用了某个widget(CHtmlPurifier,早年被网上流传的小技巧给欺骗了),然后直接在后台缓存了。
然后前台取出并恢复,结果出错了。错误原因是widget会有一个owner,记录着缓存前的controller,当前台还原的时候把后台的controller作为owner恢复了,但是前台并不能访问那个controller。

所以前端小部件最好不要缓存是么?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users