Laravel 5 Очистить кэш просмотров

168

Я заметил, что представления кэша Laravel сохраняются в ~/storage/framework/views.Со временем, они занимают мое пространство. Как мне их удалить? Есть ли команда, которая могла бы? Я пытался, php artisan cache:clear,но он не очищает кэш просмотров. При этом я должен вручную удалить файлы в указанной папке.

Также как отключить кэширование просмотров?

basagabi
источник
3
«Сверхурочно, они съедают мое пространство». Вряд ли. Большое приложение Laravel, которое я поддерживаю, имеет около 300 КБ кэшированных представлений для около 500 маршрутов. Вы никогда не закончите из-за кэшированных представлений на любом современном сервере.
ceejayoz
3
Но проблема в том, что мой хостинг-провайдер не ограничивает использование дискового пространства. Вместо этого он ограничивается количеством файлов, которые у вас есть. Так что это проблема для меня.
Basagabi
5
Это странно, и ваши пара сотен файлов storage/framework/views- это не что иное, как тысячи файлов vendor. Получите хост, у которого нет таких абсурдных безумных ограничений. Ограничение по количеству файлов? WTF ?!
ceejayoz
Не могли бы вы порекомендовать отличный хостинг для этого? Желательно общий хостинг. Я не уверен, разрешено ли мне указывать имя моего текущего хостинг-провайдера. Это большая компания, хотя.
Басагаби
1
Я хотел бы пойти с чем-то вроде Heroku, если вы не слишком технический, или Amazon Web Services, если вы. Если ваш текущий хост действительно ограничивает количество файлов, а не общее используемое пространство, они безумны.
ceejayoz

Ответы:

278

Теперь есть php artisan view:clearкоманда для этой задачи начиная с Laravel 5.1

DilipGurung
источник
Приятно знать, что. Одна вещь, которую я заметил, со временем, кеш под папкой представлений удаляется. Есть ли в коде что-то, что удаляет их через xx дней?
Басагаби
Я полагаю, что это было немного дольше, чем это :)
Оддман
29

Чтобы получить всю команду ремесленника, введите ...

php artisan

Если вы хотите очистить кеш представления, просто используйте:

php artisan view:clear

Если вы не знаете, как использовать конкретную команду ремесленника, просто добавьте «помощь» (см. Ниже)

php artisan help view:clear
Джейк Пукан
источник
11

пожалуйста, попробуйте следующую команду:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
Мосам Праджапати
источник
2
Чайник , что если вы artisan config:cacheчто все ваши .envпеременные доступны через config(), не env()или они будут нуль.
FlashJordan
1
@FlashJordan Я хотел бы прочитать ваш комментарий перед запуском config: cache. ржунимагу. Для всех, кто запускает config: cache так же слепо, как и я, просто удалите config.php из bootstrap / cache.
Тарек Адам
6

Прямо сейчас нет представления: команда clear. Для laravel 4 это может вам помочь: https://gist.github.com/cjonstrup/8228165

Отключить кэширование можно, пропустив лезвие. Кэширование представлений выполняется, потому что компиляция лезвий каждый раз - пустая трата времени.

ArjanSchouten
источник
Я получил хорошее объяснение этого здесь stackoverflow.com/questions/31455829/…
Ринто Джордж
6

Чтобы ответить на дополнительный вопрос, как отключить кэширование просмотров:

Вы можете сделать это, автоматически php artisan view:clearудаляя файлы в папке для каждого запроса с помощью команды, упомянутой DilipGurung. Вот пример класса Middleware от 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);
    }
}

Однако вы можете заметить, что Larevel будет перекомпилировать файлы в папке / app / storage / views, когда время в файлах представлений раньше, чем время в файлах блейдов PHP для макета. Таким образом, я не могу действительно думать о сценарии, где это было бы необходимо сделать.

Адам
источник
2

Очистить кэш в Laravel (Терминал)

Очистить кэш приложения

php artisan cache:clear

Очистить кеш маршрута

php artisan route:clear

Очистить кеш настроек

php artisan config:clear 

Очистить скомпилированные файлы просмотра

php artisan view:clear 

Очистить кэш в браузере Большинство провайдеров виртуального хостинга не предоставляют SSH-доступ к системам. В этом случае вы можете очистить кеш Laravel, вызвав URL в браузере. Вы можете просто разместить приведенный ниже код в вашем маршруте / web.php.

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

Вот ссылка на ресурс https://tecadmin.net/clear-cache-laravel-5/

Хемант Кумар
источник
1

используйте команду Below в терминале

php artisan cache:clear
php artisan route:cache 
php artisan config:cache 
php artisan view:clear
Уддян Семвал
источник
0

Вот помощник, который я написал, чтобы решить эту проблему для моих проектов. Это делает его очень простым и легким, чтобы иметь возможность быстро и легко разобрать все с помощью одной команды.

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

lzoesch
источник
Посмотрите на используемое пространство имен. убедитесь, что он указан в правильном пути к папке, или если вы изменили его. убедитесь, что вы обновляете его соответственно. @samjadps
lzoesch
Я обновил пространство имен на моем конце. Должен работать сейчас для вас, ничего не делая. Просто убедитесь, что он установлен в папке console / commands.
1