【问题标题】:Best wasy to build redis cache for all pages in shop - laravel 7为商店中的所有页面构建 redis 缓存的最佳方法 - laravel 7
【发布时间】:2020-09-02 16:46:29
【问题描述】:

在我的客户商店中,我使用 redis 作为缓存驱动程序。它用于存储需要大量查询的页面部分 - 如产品列表、产品视图、类别视图。 (呈现页面的中间部分)。以下是一小段代码(已删减!):

class CategoryController extends BaseController
{
    public function index(Request $request)
    {
            return View('themes.frontend.pages.category.index', [
                'content' => $this->getCategoryCache($request)
            ]);
        
    }

    private function getCategoryCache($request)
    {
        return Cache::remember($this->getCacheKey($params), 296000, function () use ($request) {
              return View('themes.frontend.pages.category.index_content')->render();
    }
}

因此,当用户访问类别时,它会调用索引来调用其他功能的内容。在这个例子中 getCategoryCache 搜索缓存键并返​​回它。缓存的值是渲染并存储在redis中的html视图。如果缓存键不存在,则调用数据库获取数据并呈现视图,然后存储在 redis 中。

问题是:如何为商店中的“例如”类别页面生成所有缓存键? 问题的原因 - 当我有时需要转储整个缓存时,需要时间来重建它,因为必须访问页面才能填满 redis。所以第一个用户不会“感受到”redis 速度优势。

我正在考虑为所有类别调用 db 并 foreach 它们;然后自定义函数将生成密钥。棘手的部分 - 有 3500 个类别和 25k 种产品需要生成。

有什么合理的方法吗?

非常感谢您的帮助! 祝你有美好的一天

【问题讨论】:

    标签: laravel redis


    【解决方案1】:

    如果您知道哪些类别和产品很受欢迎,您可以使用 artisan 命令来缓存热门产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 2023-04-06
      • 2012-03-26
      相关资源
      最近更新 更多