Как заставить Laravel очищать кеш Blade при каждом изменении шаблона, а не только после выполнения команды `php artisan view:clear` в Laravel 8?
Проблема может быть связана с тем, что Laravel кэширует Blade шаблоны для улучшения производительности. По умолчанию, кэш Blade не обновляется автоматически при каждом изменении шаблона, а только после выполнения команды `php artisan view:clear`.
Чтобы заставить Laravel очищать кеш Blade при каждом изменении шаблона, вы можете добавить следующий код в файл `AppServiceProvider.php` в метод `boot()`, который будет выполнять очистку кэша Blade при каждом запросе:
```php
public function boot()
{
if ($this->app->environment('local')) {
$this->app['view']->composer('*', function ($view) {
$view->with('clear_cache', true);
});
}
}
```
Этот код добавляет переменную `clear_cache` в каждый просмотр Blade, которая равна `true`, если приложение находится в локальной среде. Это заставит Laravel очищать кеш Blade при каждом запросе в локальной среде.
Помните, что использование этого подхода может снизить производительность вашего приложения, поэтому рекомендуется использовать его только во время разработки.
Если посмотреть в исходник блэйд-компилятора, то видно, что актуальность кэша проверяется по времени изменения файла (не его хэшу) <br/> <br/> <pre><code class="php">public function isExpired($path)
{
// ...
return $this->files->lastModified($path) >=
$this->files->lastModified($compiled);
}
public function lastModified($path)
{
return filemtime($path);
}</code></pre> <br/> <br/> И тогда можно сделать вывод, что ваш FTP клиент не изменяет время модификации файла при его загрузке. Точнее говоря, он предотвращает изменение этой метки (устанавливает исходную). <br/> <br/> В шторме для этого есть опция "Preserve files timestamp" в разделе <br/> File | Settings | Build, Execution, Deployment | Deployment | Options <br/> <br/>