【发布时间】:2016-07-11 23:47:59
【问题描述】:
我有一个电子商务网站,其中包含多达 100 万种产品,并且该网站分布在许多地区。每个产品页面都有大约 10-15 个对数据库的查询,例如通过 url 获取产品、获取产品类别和获取产品格式等。目前我使用基于 laravel 文件的缓存并且我没有在产品页面上缓存任何内容。
问题是产品页面也是各种爬虫/机器人的目标,这意味着对数据库进行大量查询。此外,如果我将产品页面缓存 1 小时,则在该时间段内不太可能受到攻击,因为这些机器人针对所有页面。此外,由于我有不同的区域(不同的域),这意味着页数是由区域数 (5-10) 来计时的。
所以我不知道如何缓存它。我想过永远缓存所有这些查询(没有时间限制),并在产品发生变化时更改缓存。这是要走的路吗? laravel 是否为每个正在缓存的查询创建一个缓存文件?如果是,那么文件数量可能会成为问题。
我也考虑过使用redis。但是我认为缓存那么多键时内存会用完吗?知道我应该如何缓存这个吗?提前致谢。
编辑1:
考虑使用 redis 进行 html 缓存。这样我就可以缓存例如产品价格及其 html。知道我需要缓存多少内存,比如说 10-2000 万个键,其中一些 html 作为它们的值?
【问题讨论】:
-
可以使用redis。