【问题标题】:delete pagination cache from laravel 4从 laravel 4 中删除分页缓存
【发布时间】:2023-04-09 15:09:01
【问题描述】:

我正在用这段代码缓存我的分页

Album::remember(3)->paginate(20);

但我不知道如何在过期时间之前从分页中删除缓存。有人可以帮忙吗。

【问题讨论】:

    标签: php caching pagination laravel-4


    【解决方案1】:

    您通常不能“忘记”数据库缓存,因为您需要知道用作键的哈希值。

    您可以使用 getCacheKey() 方法检索它(定义如下):

    /**
     * Get a unique cache key for the complete query.
     *
     * @return string
    */
     public function getCacheKey()
     {
      return $this->cacheKey ?: $this->generateCacheKey();
     }
    

    有点像

    $results = Album::remember(3)->paginate(20);
    $key = Album::getCacheKey();
    Cache::forget($key);
    

    可行,但我承认我从未使用过此过程,我倾向于为 remember() 方法分配一个自定义键并用它来忘记它:

    Album::remember(3, 'pagination')->paginate(20);
    Cache::forget('pagination');
    

    【讨论】:

    • 使用 Album::remember(3, 'pagination')->paginate(20) 时返回空数据。好像我删除了自定义键然后它返回了完整的数据集。有什么解决办法吗?
    • 嗯,它是否与 ->get() 而不是 ->paginate() 一起使用(我过去遇到过问题)?您是否尝试过 getCacheKey() 方法?如果您使用的是文件或数据库以外的驱动程序,则可以使用 tags 进行缓存并刷新它们
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2020-09-10
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多