symfony 5.4 中使用 cache contracts 时,可通过内置 `cache:pool:clear` 命令精准清除指定缓存池(如 `cache.app`),既支持终端手动执行,也可在控制器中安全调用,实现生产环境按需刷新缓存。
在 Symfony 5.4 中,当你基于 Symfony\Contracts\Cache\CacheInterface 或具体适配器(如 FilesystemAdapter)构建缓存逻辑时,缓存数据默认由容器自动管理,并绑定到预定义的缓存池(如 cache.app)。虽然 Symfony 没有提供全局“一键清空所有缓存”的通用命令(出于安全与精确性考虑),但它提供了高度可控的 cache:pool:clear 命令——这是官方推荐、生产就绪的缓存清理方式。
✅ 推荐做法:使用 cache:pool:clear 清理指定池
该命令专为 Cache Contracts 设计,可清除任意已注册的缓存池(如 cache.app、cache.system 等),且不干扰系统缓存(如 var/cache/ 中的 DI/Router 编译缓存),避免意外中断服务:
# 清除应用主缓存池(对应 cache.app 服务) php bin/console cache:pool:clear cache.app # 同时清除多个池(用空格分隔) php bin/console cache:pool:clear cache.app cache.security_expression # 指定环境(生产环境务必显式声明) php bin/console cache:pool:clear cache.app --env=prod
⚠️ 注意事项:
? 进阶:在控制器中安全触发清理(适用于管理后台)
如需通过 HTTP 接口触发(例如运维后台按钮),可复用 Console Application,但必须严格限制访问权限(如仅限 ROLE_ADMIN + CSRF 保护 + 环境校验):
// src/Controller/CacheClearController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
#[Route('/admin/cache/clear', name: 'admin_cache_clear')]
#[IsGranted('ROLE_ADMIN')]
class CacheClearController extends AbstractController
{
public function __invoke(KernelInterface $kernel): Response
{
// 生产环境禁止直接调用(可选强约束)
if ('prod' === $kernel->getEnvironment()) {
throw $this->createAccessDeniedException('Cache clear is disabled in production.');
}
$application = new Application($kernel);
$appl
ication->setAutoExit(false);
$input = new ArrayInput([
'command' => 'cache:pool:clear',
'pools' => ['cache.app'],
'--env' => $kernel->getEnvironment(),
]);
$output = new BufferedOutput();
$exitCode = $application->run($input, $output);
$content = sprintf("Cache cleared (exit code: %d)\n%s", $exitCode, $output->fetch());
return $this->render('admin/cache_clear.html.twig', [
'result' => $content,
'success' => 0 === $exitCode,
]);
}
}? 总结:
# php
# redis
# html
# app
# access
# red
# symfony
# csrf
# 接口
# var
# delete
# console
# http
# router
# 进阶
# 这是
# 器中
# 那是
# 多个
# 遍历
# 当你
# 适用于
# 可在
# 可选
相关文章:
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何快速启动建站代理加盟业务?
Python路径拼接规范_跨平台处理说明【指导】
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在IIS中新建站点并配置端口与IP地址?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
小型网站建站如何选择虚拟主机?
如何在景安服务器上快速搭建个人网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
建站主机如何选?高性价比方案全解析
广州美橙建站如何快速搭建多端合一网站?
企业微网站怎么做,公司网站和公众号有什么区别?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何高效利用亚马逊云主机搭建企业网站?
建站之星如何防范黑客攻击与数据泄露?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何制作算命网站,怎么注册算命网站?
如何用y主机助手快速搭建网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
制作网站怎么制作,*游戏网站怎么搭建?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何解决ASP生成WAP建站中文乱码问题?
C++如何使用std::optional?(处理可选值)
网站制作价目表怎么做,珍爱网婚介费用多少?
*服务器网站为何频现安全漏洞?
魔方云NAT建站如何实现端口转发?
深圳网站制作案例,网页的相关名词有哪些?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何通过西部建站助手安装IIS服务器?
建站之星2.7模板快速切换与批量管理功能操作指南
如何在西部数码注册域名并快速搭建网站?
股票网站制作软件,网上股票怎么开户?
建站之星如何通过成品分离优化网站效率?
如何在万网自助建站中设置域名及备案?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星北京办公室:智能建站系统与小程序生成方案解析
北京专业网站制作设计师招聘,北京白云观官方网站?
临沂网站制作公司有哪些,临沂第四中学官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。