Cactiverecord Vs. Coutputcache Vs. Ccache


I find it quite confusing and actually annoying that the three classes all handle the caching duration differently:

CCache says 0 means "does not expire" (in my book the correct interpretation)

CActiveRecord says 0 means "disable caching"

COutputCache says 0 means "remove cached content"

How does this behaviour make any sense at all?

I understand that changing it now is probably not possible any more. I can’t understand why I cannot specify “cache indefinitely” for CActiveRecord or COutputCache, a dependency should normally take care of expiration.