数据库更新后如何清除缓存?
Posted
技术标签:
【中文标题】数据库更新后如何清除缓存?【英文标题】:How to clear cache after database updates? 【发布时间】:2019-09-01 19:43:39 【问题描述】:我正在尝试在一些表更新后清除缓存。
在控制器的存储功能中我正在添加
Artisan::call('cache:clear');
但这不是一个好方法。我让观察者来做这件事。但这也在重演。
例如,我有用户、类别、帖子、访问者表。 如果更新类别和帖子表,则必须清除缓存。但我无法清楚地说明这一点。我可以为此编写清晰的代码吗?任何想法都会很好。提前致谢。
【问题讨论】:
【参考方案1】:这是一个清晰的代码示例:
在 app/Traits/CacheClear.php 中创建文件,并放入以下代码:
namespace App\Traits;
trait CacheClear
/**
* Boot function for Laravel model events.
* https://laravel.com/docs/5.8/eloquent#events
*
* @return void
*/
protected static function boot()
parent::boot();
/**
* After model is created, or whatever action, clear cache.
*/
static::updated(function ()
Artisan::call('cache:clear');
);
现在,以防万一,运行composer dump-autoload
。
然后转到你的模型并使用特征,
use App\Traits\CacheClear;
class User extends Model
use CacheClear;
每次在 User 模型上触发 update
事件时,都会调用命令 :)
【讨论】:
由于某种奇怪的原因,堆栈上的代码格式混乱了,它应该是这样的:imgur.com/e7sy7hK 这就像一个魅力。尽快尝试。谢谢:)以上是关于数据库更新后如何清除缓存?的主要内容,如果未能解决你的问题,请参考以下文章
nginx_cache_purge模块如何动态清除缓存,加分?