我有一个拥有多达 100 万种产品的电子商务网站,并且该网站位于许多地区。每个产品页面都有大约 10-15 个对数据库的查询,比如通过 url 获取产品、获取产品类别和获取产品格式等。目前我使用基于 laravel 文件的缓存,我没有在产品页面上缓存任何内容。
问题是产品页面也是各种爬虫/机器人的目标,这意味着对数据库进行了大量查询。另外,如果我缓存一个产品页面说 1 小时,那么在那个时间段内不太可能被击中,因为这些漫游器以所有页面为目标。此外,由于我有不同的区域(不同的域),这意味着页面数由区域数(5-10)计时。
所以我不知道如何缓存它。我考虑过永久缓存所有这些查询(没有时间限制),并在产品发生变化时更改缓存。这是要走的路吗? laravel 是否为每个正在缓存的查询创建一个缓存文件?如果是,那么文件数量可能会成为问题。
我也想过用redis。但是我认为缓存那么多键时我会用完内存吗?知道我应该如何缓存这个吗?提前致谢。
编辑1:
想过用redis做html缓存。这样我就可以缓存例如产品价格及其 html。知道我需要多少内存来缓存让我们说 10-2000 万个键以一些 html 作为它们的值吗?
最佳答案
有一个缓存查询的 laravel 包。
https://github.com/dwightwatson/rememberable
User::first()->remember(1440)->posts()->get();
关于php - Laravel 缓存大量查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199308/