我有一个应用程序,我重复使用相同的(大)类。由于我为该App使用AJAX,我总是要创建这个类的新对象。有人建议我缓存这个类的一个实例,并在需要时使用它(在php环境中使用apc)
它有什么好处?它真的节省了一些时间吗?
$this->tickets_persist = unserialize(@apc_fetch("Tickets"));
if (!$this->tickets_persist) {
$this->tickets_persist = new Tickets_Persistance(); // Take long time
apc_store("Tickets", serialize($this->tickets_persist));
}
答案 0 :(得分:5)
只有在处理具有昂贵实例化成本的类时,才能真正实现这些好处。如果有很多时间,内存或其他资源在类的构造函数中完成(例如:读取XML站点地图并构建复杂的数据结构以构建导航。)您可以通过利用缓存来避免这种情况。
还值得注意的是,资源(如数据库链接等)无法缓存,并且在对象被反序列化后必须重新建立它们(这里是__sleep
和{{1魔法进来)。
答案 1 :(得分:4)
如果您的对象在实例化期间需要大量处理,那将是值得的。缓存不会帮助你处理“大”对象,当你想避免可以重复的处理时它会帮助你。在您的情况下,如果您的构造方法需要大量处理,那将是值得的。我们来举例说明缓存如何在网页的上下文中起作用:
您的应用程序将以相同的方式运行,唯一的区别是您将“重新使用”已经完成的实例化过程。