簡體   English   中英

symfony中如何禁用緩存

[英]How to disable cache in symfony

我正在 symfony 框架中開發一個網站。 在我的緩存文件夾中存儲了一個巨大的緩存。 我想永久禁用緩存。

雖然我建議不要在生產系統上禁用緩存,但您可以通過編輯和添加到config.yml文件來禁用樹枝模板引擎緩存

twig:
    cache: false

Symfony2 中的類緩存可以在app.phpapp_dev.php文件中禁用:

$loader = require_once __DIR__.'/../app/autoload.php';
Debug::enable();

$kernel = new AppKernel('dev', true);
#$kernel->loadClassCache();  // <-- comment out this line
$request = Request::createFromGlobals();

Symfony2 - 禁用引導文件和類緩存

即使在使用 app_dev.php 時我也遇到緩存問題。 我會更改路線,但是當我嘗試通過瀏覽器訪問它時它不會更新。

我嘗試注釋掉其中包含緩存的任何內容(如上所述)。 我的 AppKernel('dev', true) 設置為 true。 沒有任何效果。

如果我運行控制台緩存:清除它會修復它,但下一次路由更改會再次中斷。 我不得不在每次保存時運行緩存:清除,這很荒謬。

我的問題原來是因為我通過 SFTP 遠程工作,所以 PHP Storm(我的編輯器)在其部署配置中“保留時間戳”。 一旦我更改了該配置,問題就消失了。 顯然,即使在開發環境中,也有一些緩存正在查看文件時間戳。

我認為你不能禁用“永久緩存”,因為 Symfony 應用程序使用一些緩存文件來運行得更快(或只是為了運行)。 這方面的示例是包含依賴項注入容器 (appProdProjectContainer.php) 的文件。

您可以禁用某些類型的緩存,如 Twig 緩存(如 Diego Ferri 之前所說)或 Http 緩存(在 app.php 中使用 AppCache 解包 AppKernel)甚至 Doctrine 緩存(在 config.yml 中)。

但是我不會推薦這個。 您緩存的應用程序越多,您的應用程序就會越快。

當您在開發環境狀態下工作時,無論如何都會禁用緩存 - 我假設您只想在開發中禁用它,因此請使用 /app_dev.php 文件確保沒有緩存任何內容。

或者,您可以使用命令行定期清空緩存

php app/console cache:clear

你可以在這里看到所有不同的參數: http : //symfony.com/doc/current/cookbook/console/usage.html

這是來自 symfony 文檔:

https://symfony.com/doc/current/bundles/override.html

如果您在新位置添加模板,您可能需要清除緩存(php bin/console cache:clear),即使您處於調試模式。

這意味着文檔中甚至沒有明確定義如何以及何時清除緩存的規則。

有時您想更改和調試 vendor 文件夾中的文件,此后即使此命令也無濟於事:

bin/console cache:clear

唯一可以幫助您的是刪除 /var/cache/dev 文件夾中的所有內容

您可以在每次請求后用於清除緩存的本地環境的骯臟黑客是:

<?php

namespace App;

use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;

class Kernel extends BaseKernel
{
    use MicroKernelTrait;

    public function terminate(Request $request, Response $response)
    {
        system("rm -rf ".escapeshellarg('../var/cache/dev'));

        return parent::terminate($request, $response);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM