缓存,最佳实践

时间:2020-02-12 17:48:46

标签: php laravel

我对缓存有一些疑问。

我使用Laravel作为框架,但我不知道应该为缓存设置多少次。

我的意思是,我曾经这样创建缓存:

$model = Cache::remember("model.1", 60*24, function () {
      return Model::find(1)->first();
});

所以在这里,我将ID为1的关键模型的模型留在缓存中1天。

问题是,我应该在缓存中设置多少次。通常,使用这种缓存方法,我会添加一个ModelObserver,如果该缓存已被删除,它将根据模型ID忘记缓存。 并且,当更新模型或保存模型时,会将请求的模型ID放入缓存中。

我可以为模型设置无限次缓存吗?因为,观察者将在需要时再次添加到缓存中,或者在需要时忘记(感谢观察者)

我试图在互联网上找到一篇有关缓存时间以及应设置多少等的文章。但是找不到。

例如,我可以拥有一个列出我的应用程序所有用户的缓存,如果添加了一个用户(感谢观察者),我会在缓存中提出列出所有用户的请求(或者忘记它,以及何时第一个用户进入列出用户的页面,它将重新缓存它。)

有关缓存的最佳做法是什么?

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

我可能建议不要缓存用户记录-仅仅是因为您可能会遇到潜在的安全问题。

您所做的一切看起来都很好,正如您所说,您可以将其推到最长时间-如果Observer负责清除或重新缓存,那么您已经具有在其中进行管理的机制。地方。

我可能会改变的一件事是设置生存期的方式-例如,可以像这样使用Illuminate\Support\Carbon

$model = Cache::remember("model.1", Carbon::now()->addYear(), function () {
      return Model::find(1)->first();
});

要考虑的另一件事是缓存驱动程序和可用的存储量-redis将所有内容存储在内存中,file存储在磁盘上,等等。

除此之外,一切看起来都很不错。