我有一个在循环中运行SomeModel::getValue($month, $year, $departmentId)
函数的应用程序。
getValue
创建一个查询并返回结果:
return self::where('department_id', '=', $department_id)
->where('year', '=', $year)
->where('month', '=', $month)
->pluck('value');
在这个循环中,它可能会多次调用相同的参数。 我想知道每次想要获取数据时避免创建新查询的最佳方法。
我考虑过在模型中创建一个静态数组,并在每次调用getValue
时匹配它。如果数组中存在值,则返回它,如果不创建查询。
我的解决方案可以吗?你还有其他想法吗?谢谢!
我正在使用Laravel 4
答案 0 :(得分:1)
静态缓存是最好的方法,只要您对其有效:
根据静态数组的最大大小,最好确定缓存有效的时间(例如1分钟),并将缓存推送到某种形式的跨请求缓存,以便您可以重用它(参见表中的APC,Memcached,甚至简单的MySQL INSERT) - 在所有情况下,只需保存序列化数组并在进行实际计算之前将其作为附加步骤加载。