Laravel数据库缓存

时间:2014-11-13 12:09:04

标签: mysql database caching laravel

我正在开发一个电子商务网站,在这个网站的每个页面中都有这个包含购物车信息的标题,所以每次有一个带有这个标题的页面加载购物车时,数据库被击中。我想知道我是否可以使用数据库缓存技术来减少查询时间?就好比如果没有改变,那么除非将新产品添加到购物车中,否则不要从数据库中获取数据?

1 个答案:

答案 0 :(得分:2)

当然可以,但这听起来不错,我不鼓励它,因为缓存与整个应用程序共享,购物车信息与单个用户相关。对于这种用户特定信息,最好利用cookie或会话。

无论如何,你在这里。你没有提供任何代码示例,所以我编写了一些通用的东西。诀窍是向缓存键添加使其对每个用户(例如模型主键)唯一的内容,并在向/从购物车添加/删除产品后使用先前的缓存键清除缓存。

// Code to get current user shopping cart (The one that will be shown in your header)
$cart = Cart::where('user_id', $user_id = Auth::user()->getKey())->remember(60*2, "cartOfUser$user_id")->get();

// Code that adds a product to the cart
Cart:addProduct($product, $qty) and Cache::forget('cartOfUser' . Auth::user()->getKey());

我建议现在不要过度优化。我确定购物车数据库查询不是什么大问题。完成您的应用程序,打磨它,当一切按预期工作时,运行一个分析器来找到瓶颈,然后进行优化。