如何解决更新的数据显示强制刷新后Yii2
我正在yii2 basic上工作,当我更新表单时,数据库中的数据更新成功,但是即使刷新链接后,更新数据dnt仍显示在表单中,但是当我硬刷新或删除高速缓存时,它会在表单中显示更新的数据,这可能是一个可能的问题? ,因为它在几天前工作正常,但突然出现了这种行为,即使另一个应用程序在同一服务器上运行正常,我也需要帮助。 是yii2配置问题还是服务器配置问题? 在db.php中,我有这两个值
'enableSchemaCache' => true,'enableQueryCache' => false,
我尝试将架构缓存设置为false,但是没有运气。
解决方法
似乎已启用某种(数据)缓存。 您可以:
- 检查用于从数据库检索数据的方法,以查看是否已启用缓存。
这样的方法是:
find()
,findOne()
,findAll()
。 检查它们是否已被您的代码覆盖或扩展。
如果扩展了默认的find()
方法或其任何变体,则还可以扩展afterSave()
方法以在对数据库执行更新后刷新缓存。
这是我在测试环境中用于执行更新后刷新缓存的内容。
public function afterSave($insert,$changedAttributes)
{
parent::afterSave($insert,$changedAttributes);
//Clears cache if this is an update
if( !$insert)
{
if(method_exists ($this,'flushCache'))
{
$this->flushCache();
}
}
}
public function flushCache()
{
Yii::$app->cache->delete($this->getCacheKey());
}
protected function getCacheKey()
{
return self::getCacheKeyPrefix(). $this->getPrimaryKey() ;
}
public static function getCacheKeyPrefix()
{
return self::CACHE_PREFIX . self::getTableSchema()->name;
}
说明
- 写入数据库后,Yii将调用afterSave()事件。
- 如果执行了插入操作,则将跳过高速缓存刷新。如果执行了UPDATE,则将调用flushCache方法清除缓存。
请注意,您应该了解如何在自己的环境中设置缓存,然后根据需要修改刷新缓存。
让我知道如何进行。 谢谢,谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。