Laravel 5 Effacer le cache de vues

168

Je remarque que les vues du cache Laravel sont stockées dans ~/storage/framework/views.Au fil du temps, elles mangent mon espace. Comment les supprimer? Y a-t-il une commande qui pourrait? J'ai essayé php artisan cache:clear,mais cela n'efface pas le cache des vues. Avec cela, je dois supprimer manuellement les fichiers dans ledit dossier.

Aussi, comment désactiver la mise en cache des vues?

basagabi
la source
3
"Les heures supplémentaires, ils mangent mon espace." Improbable. Une grande application Laravel que je gère contient environ 300 Ko de vues en cache pour environ 500 itinéraires. Vous ne serez jamais à court en raison des vues mises en cache sur un serveur moderne.
ceejayoz
3
Mais le problème est que mon fournisseur d'hébergement ne se limite pas à l'utilisation de l'espace disque. Au lieu de cela, il est limité par le nombre de fichiers que vous avez. C'est donc un problème pour moi.
basagabi
5
C'est bizarre, et vos quelques centaines de fichiers storage/framework/viewsne sont rien à côté des milliers de fichiers vendor. Obtenez un hôte qui n'a pas de limitations absurdes insensées comme ça. Limiter par le nombre de fichiers? WTF?!
ceejayoz
Pourriez-vous recommander un excellent hébergement pour cela? Hébergement mutualisé de préférence. Je ne sais pas si je suis autorisé à partager le nom de mon fournisseur d'hébergement actuel. C'est une grande entreprise, cependant.
basagabi
1
J'irais avec un endroit comme Heroku si vous n'êtes pas trop technique, ou Amazon Web Services si vous l'êtes. Si votre hôte actuel limite vraiment le nombre de fichiers et non l'espace total utilisé, ils sont fous.
ceejayoz

Réponses:

278

Il y a maintenant une php artisan view:clearcommande pour cette tâche depuis Laravel 5.1

DilipGurung
la source
Il est bon de savoir que. Une chose que je remarque, au fil du temps, le cache sous le dossier views est supprimé. Y a-t-il quelque chose dans le code qui les supprime dans xx jours?
basagabi
Je crois que ça fait un peu plus longtemps que ça :)
Oddman
29

Pour obtenir toute la commande artisanale, tapez ...

php artisan

Si vous souhaitez vider le cache de la vue, utilisez simplement:

php artisan view:clear

Si vous ne savez pas comment utiliser une commande artisanale spécifique, ajoutez simplement "help" (voir ci-dessous)

php artisan help view:clear
Jake Pucan
la source
11

veuillez essayer cette commande ci-dessous:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
Mosam Prajapati
la source
2
Assurez-vous artisan config:cacheque si vous accédez à toutes vos .envvariables via config(), non env()ou qu'elles seront nulles.
FlashJordan
1
@FlashJordan J'aurais aimé lire votre commentaire avant d'exécuter config: cache. lol. Pour toute autre personne qui exécute config: cache aussi aveuglément que moi, supprimez simplement config.php de bootstrap / cache.
Tarek Adam
6

Pour le moment, il n'y a pas de vue: commande claire. Pour laravel 4, cela peut probablement vous aider: https://gist.github.com/cjonstrup/8228165

La désactivation de la mise en cache peut être effectuée en ignorant la lame. La mise en cache des vues est effectuée car la compilation de lames à chaque fois est une perte de temps.

ArjanSchouten
la source
J'ai une bonne explication à ce sujet ici stackoverflow.com/questions/31455829/…
Rinto George
6

Pour répondre à votre question supplémentaire sur la désactivation de la mise en cache des vues:

Vous pouvez le faire en supprimant automatiquement les fichiers du dossier pour chaque demande avec la commande php artisan view:clearmentionnée par DilipGurung. Voici un exemple de classe Middleware de https://stackoverflow.com/a/38598434/2311074

<?php
namespace App\Http\Middleware;

use Artisan;
use Closure;

class ClearViewCache
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (env('APP_DEBUG') || env('APP_ENV') === 'local') 
            Artisan::call('view:clear');

        return $next($request);
    }
}

Cependant, vous pouvez noter que Larevel recompilera les fichiers dans le dossier / app / storage / views chaque fois que l'heure des fichiers de vues est antérieure à l'heure des fichiers de lame PHP pour la mise en page. THus, je ne peux pas vraiment penser à un scénario où cela serait nécessaire de faire.

Adam
la source
2

Vider le cache à Laravel (Terminal)

Effacer le cache d'application

php artisan cache:clear

Effacer le cache d'itinéraire

php artisan route:clear

Effacer le cache de configuration

php artisan config:clear 

Effacer les fichiers de vue compilés

php artisan view:clear 

Vider le cache dans le navigateur La plupart des fournisseurs d'hébergement partagé ne fournissent pas d'accès SSH aux systèmes. Dans ce cas, vous pouvez vider le cache Laravel en appelant URL dans le navigateur. Vous pouvez simplement placer le code ci-dessous dans vos routes / web.php.

Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "Cache is cleared";
});

Voici le lien de la ressource https://tecadmin.net/clear-cache-laravel-5/

Hemant Kumar
la source
1

utiliser la commande ci-dessous dans le terminal

php artisan cache:clear
php artisan route:cache 
php artisan config:cache 
php artisan view:clear
Uddyan Semwal
la source
0

Voici une aide que j'ai écrite pour résoudre ce problème pour mes projets. Cela rend super simple et facile de pouvoir tout effacer rapidement et avec une seule commande.

https://github.com/Traqza/clear-everything

Lzoesch
la source
Jetez un œil à l'espace de noms utilisé. assurez-vous que le chemin du dossier est correct ou si vous l'avez modifié. assurez-vous de le mettre à jour en conséquence. @samjadps
lzoesch
J'ai mis à jour l'espace de noms de mon côté. Devrait fonctionner maintenant pour vous sans rien faire. Assurez-vous simplement qu'il est défini dans le dossier console / commandes.
lzoesch le