OpenCart缓存分为两种,一种是文件缓存,即把需要缓存的内容写在一个文件中,需要读取缓存的时候就读该文件即可;另一种缓存是内存缓存,即把需要缓存的内容写在内存中,读写速度都很快,常用的有Memcache等。 opencart 自带的有缓存类 /system/library/cache.php ,该缓存属于文件缓存
我们可以看到,设置的默认缓存时间是3600秒,也就是1小时,该类中提供了3个方法。set、get、delete,看到名称相信应该就知道是什么意思了。 设置缓存、获取缓存、删除缓存。缓存一般都是键值对,一个key对应一个value。所以我们只需要记住缓存的key,就可以获取到缓存的value。
下面用一个实际例子”缓存产品数量功能”,来介绍缓存如何使用。
oc对大数据量的支持不是很好,当产品数量过多的时候,很多人选择去掉了显示数量的功能。其实这里大家可以用下缓存功能。
首先我们找到头部文件(/catalog/controller/common/header.php),看下产品数量是在什么地方调用的。
在两层循环里面,有一个获取产品数量的方法。所以当数据量大的时候这里获取产品数量的方法就会很慢。 我们在这里把代码修改下,把categories缓存起来
加红线的就是我添加的缓存代码,下面介绍下实现原理。 首先查看缓存里面的key=common_header_categories有没有值,如果没有就去查询头部的导航、导航数量等信息,然后缓存使用set,把查询出来的结果缓存起来,最后赋值给$this->data['categories'];key=common_header_categories有值,那么就不去查询数据库,直接读取缓存的数据赋值给$this->data['categories']。
我们来测试下是否缓存成功
这里添加 echo “1″;正常情况是,刷新页面,第一次会显示出“1”,因为我们没有common_header_categories值的缓存;再刷新页面第二次,就不会出现“1”,因为我们已经有了缓存,所以就不会执行echo “1″ 这里的代码,直接显示缓存里的数据。我们看下测试结果 第一次刷新
第二次刷新
测试OK,说明已经缓存住了。我们的缓存文件放在什么地方呢?
在程序中很多地方都可以用到缓存,头部分类、左侧分类、获取产品等,修改原理和我这个一样 (责任编辑:最模板) |