php - Laravel 缓存大量查询

标签 php mysql laravel caching

我有一个拥有多达 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/

相关文章:

php - 清理或验证电子邮件 php

php - 访客点击柜台 - 建议的方法

jquery - 通过复选框刷新 jsp 文件并将结果发布到同一 jsp 文件中,而不转到 servlet?

php - 在函数中利用现有的数据库连接

mysql - laravel 与 json 列的关系

php - 如何保存裁剪后的图像

PHP exec() 不适用于 ffmpeg

mysql - Laravel 5 插入带有外键错误的行

php - 无法解析主机 : 1L9ZSTKURF. algolia.net

laravel - 加入后如何使用 Eloquent 流利语法更新记录?