Как очистить кеш Laravel

Обновлено: 03.07.2024

Сейчас мне нужно ввести текст. \n

представление php artisan:очистить\nкеш php artisan:очистить\n \n

Да, я мог бы написать сценарий и т. д. Мне просто интересно, есть ли что-то уже встроенное в artisan, которое делает это. \n

Вот почему:" моя среда IDE не может игнорировать определенные папки, поэтому она выполняет поиск в кэшированных файлах. Я считаю, что это ускоряет работу, чтобы сдуть все кеши перед выполнением поиска по всему сайту, поэтому я ищу эффективный способ удалить эти файлы. Комментарии Laravel, как правило, заполняют кеши повсюду, но особенно в папке хранилища. Мне просто интересно, достаточно ли умен Artisan, чтобы сделать свою собственную очистку, если я застрял с ручным вариантом. \n","bodyInMarkdown":"Вот \"почему\" моя IDE не может игнорировать определенные папки, поэтому она ищет в кэшированных файлах. Я считаю, что это ускоряет работу, чтобы сдуть все кеши перед выполнением поиска по всему сайту, поэтому я ищу эффективный способ удалить эти файлы. Комментарии Laravel, как правило, заполняют кеши повсюду, но особенно в папке хранилища. Мне просто интересно, достаточно ли умен Artisan, чтобы сделать свою собственную очистку, если я застрял с опцией вручную.","ответы":[],"пользователь":,"достижения":[] ,"сообщил":null,"персонал":false,"подписался":false,"profile":,"dateSegments":,"settings":,"links":>,"likes":[],"created_at" :"2016-05-20T10:41:22.000000Z","ссылки":,"best_answer":false,"dateSegments":>,

Одним из решений является добавление записи в ваш package.json ? \n

Немного опоздал с боем, но я думаю, что php artisan optimise:clear - правильный ответ относительно результата команды: \n

можно попробовать\n

Я сделал сценарий оболочки для очистки кеша laravel в Linux-машине \n

если cd \/var\/www\/html\/sobkaj; затем \n

else\necho "не удалось проверить \/var\/www\/html\/sobkaj"\nfi \n

Вот ссылка\n

optimize:clear выполняет следующее \n

Вышел Laravel 9, а вместе с ним появилось множество новых полезных функций и настроек. Это включает в себя улучшенный API доступа\/мутатора, улучшенную поддержку приведения Enum, принудительные привязки областей, новый механизм базы данных для Laravel Scout и многое другое.

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

Обычно этот случай, скорее всего, вызван кэшированием, применяемым фреймворком Laravel.

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

❗️ Убедитесь, что вы запускаете их в контексте вашего приложения. Это означает, что ваш терминал в настоящее время находится в том же каталоге, что и ваше приложение Laravel.

1. Кэш конфигурации

Конфигурация кэширования помогает объединить все параметры конфигурации вашего приложения в один файл, который будет быстро загружаться платформой.

Очистка кэша конфигурации

Однако, если вы заметили, что изменения значений конфигурации в файле .env не отражаются на вашем приложении, вы можете рассмотреть возможность очистки кеша конфигурации с помощью следующей команды:

Выйти из полноэкранного режима

Если вы хотите быстро сбросить кеш конфигурации после их очистки, вместо этого вы можете выполнить следующую команду:

Выйти из полноэкранного режима

Кэширование вашей конфигурации также поможет очистить текущий кеш конфигурации. Таким образом, это помогает сэкономить ваше время, не запуская обе команды.

2. Кэширование маршрута

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

Очистка кэша маршрутов

Следующая команда очистит весь кэш маршрутов в вашем приложении:

Выйти из полноэкранного режима

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

Выйти из полноэкранного режима

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

3. Кэширование просмотров

Представления кэшируются в скомпилированные представления для повышения производительности при выполнении запроса. По умолчанию Laravel определяет, было ли некомпилированное представление изменено позднее, чем скомпилированное, прежде чем решить, следует ли перекомпилировать представление.

Очистка кеша просмотра

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

Выйти из полноэкранного режима

Кроме того, Laravel также предоставляет Artisan-команду для предварительной компиляции всех представлений, используемых вашим приложением. Точно так же эта команда также очищает кеш представлений перед повторной компиляцией нового набора представлений:

Выйти из полноэкранного режима

4.Кэш событий

Если вы используете Events в своем приложении Laravel, рекомендуется кэшировать ваши Events, так как вы, скорее всего, не хотите, чтобы фреймворк сканировал всех ваших прослушивателей при каждом запросе.

Очистка кеша событий

Если вы хотите очистить кэшированные события, вы можете запустить следующую Artisan-команду:

Выйти из полноэкранного режима

Аналогичным образом кэширование ваших событий также очищает весь существующий кеш в фреймворке перед перестройкой нового кеша:

Выйти из полноэкранного режима

5. Кэш приложения

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

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

Чтобы очистить кеш приложения, вы можете запустить следующую Artisan-команду:

Выйти из полноэкранного режима

Это очистит все данные кеша в хранилище, которые обычно хранятся в /storage/framework/cache/data/ . Эффект подобен вызову Cache::flush(); Метод фасада через код.

❗️ Эта команда НЕ очистит кеш конфигурации, маршрута или представления, которые хранятся в каталоге /bootstrap/cache/.

6. Очистка всего кеша

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

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

Выйти из полноэкранного режима

Как вы можете прочитать из отзывов терминала, все типы кеша, существовавшие в вашем приложении Laravel, будут полностью очищены, кроме кеша событий.

❗️ Скомпилированные сервисы и файлы пакетов удалены! можно запустить индивидуально с помощью команды $ php artisan clear-compiled. Он используется для удаления скомпилированного файла класса во фреймворке.

🎁 Бонус

Если приведенные выше Artisan-команды Laravel не решают проблему, с которой вы столкнулись, возможно, вам придется посмотреть на другие связанные среды в вашем проекте, которые могут ее вызывать.

При создании проекта Laravel обычно используется Composer Dependency Manager для PHP, а также NPM для любой библиотеки JavaScript, которая может понадобиться в вашем проекте. Мы просто должны принять к сведению, что оба менеджера пакетов используют некоторую форму кэширования для повышения производительности.

Очистка кеша Composer

Иногда кажется, что новый пакет, который вы только что установили через Composer, вообще не работает. Или новый проект, который вы только что клонировали из репозитория, работает неправильно.

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

Выйти из полноэкранного режима

А также любой из следующих вариантов (все они преследуют одну и ту же цель — удаление всего содержимого из каталогов кеша Composer):

Некоторые задачи по извлечению или обработке данных, выполняемые вашим приложением, могут сильно нагружать ЦП или выполняться несколько секунд. В этом случае принято кэшировать полученные данные на время, чтобы их можно было быстро извлечь при последующих запросах тех же данных. Кэшированные данные обычно хранятся в очень быстром хранилище данных, таком как Memcached или Redis.

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

Конфигурация

Файл конфигурации кэша вашего приложения находится по адресу config/cache.php . В этом файле вы можете указать, какой драйвер кэша вы хотите использовать по умолчанию во всем приложении. Laravel поддерживает популярные механизмы кэширования, такие как Memcached, Redis, DynamoDB и реляционные базы данных. Кроме того, доступен драйвер кэша на основе файлов, а драйверы массива и «нулевого» кэша обеспечивают удобные серверные части кэша для ваших автоматических тестов.

Файл конфигурации кэша также содержит различные другие параметры, которые задокументированы в файле, поэтому обязательно прочитайте эти параметры. По умолчанию Laravel настроен на использование драйвера кэширования файлов, который хранит сериализованные кэшированные объекты в файловой системе сервера. Для больших приложений рекомендуется использовать более надежный драйвер, такой как Memcached или Redis. Вы даже можете настроить несколько конфигураций кэша для одного и того же драйвера.

Предварительные требования к драйверу

База данных

При использовании драйвера кэша базы данных вам потребуется настроить таблицу для хранения элементов кэша.Вы найдете пример объявления схемы для таблицы ниже:

Вы также можете использовать Artisan-команду php artisan cache:table для создания миграции с правильной схемой.

Мемкэш

Для использования драйвера Memcached необходимо установить пакет Memcached PECL. Вы можете перечислить все свои серверы Memcached в файле конфигурации config/cache.php. Этот файл уже содержит запись memcached.servers, которая поможет вам начать работу:

При необходимости вы можете указать в качестве хоста путь к сокету UNIX. Если вы сделаете это, параметр порта должен быть установлен на 0:

Редис

Прежде чем использовать кеш Redis с Laravel, вам необходимо либо установить PHP-расширение PhpRedis через PECL, либо установить пакет predis/predis (~1.0) через Composer. Laravel Sail уже включает это расширение. Кроме того, на официальных платформах развертывания Laravel, таких как Laravel Forge и Laravel Vapor, по умолчанию установлено расширение PhpRedis.

Для получения дополнительной информации о настройке Redis посетите страницу документации Laravel.

DynamoDB

Перед использованием драйвера кэша DynamoDB необходимо создать таблицу DynamoDB для хранения всех кэшированных данных. Обычно эта таблица должна называться cache . Однако вы должны назвать таблицу на основе значения конфигурации store.dynamodb.table в файле конфигурации кэша вашего приложения.

Эта таблица также должна иметь строковый ключ раздела с именем, которое соответствует значению элемента конфигурации store.dynamodb.attributes.key в файле конфигурации кэша вашего приложения. По умолчанию ключ раздела должен называться key .

Использование кеша

Получение экземпляра кэша

Чтобы получить экземпляр хранилища кеша, вы можете использовать фасад Cache, который мы будем использовать в этой документации. Фасад Cache обеспечивает удобный и лаконичный доступ к базовым реализациям контрактов кеша Laravel:

Доступ к нескольким хранилищам кэша

Используя фасад Cache, вы можете получить доступ к различным хранилищам кеша с помощью метода store. Ключ, передаваемый методу хранилища, должен соответствовать одному из хранилищ, перечисленных в массиве конфигурации хранилищ в вашем файле конфигурации кэша:

Извлечение элементов из кэша

Метод get фасада Cache используется для извлечения элементов из кэша. Если элемент не существует в кеше, будет возвращено значение null. При желании вы можете передать второй аргумент методу get, указав значение по умолчанию, которое вы хотите вернуть, если элемент не существует:

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

Проверка существования элемента

Метод has можно использовать для определения наличия элемента в кэше. Этот метод также вернет false, если элемент существует, но его значение равно null:

Увеличение/уменьшение значений

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

Получить и сохранить

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

Если элемент не существует в кеше, будет выполнено замыкание, переданное методу запоминания, и его результат будет помещен в кеш.

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

Получить и удалить

Если вам нужно извлечь элемент из кеша, а затем удалить его, вы можете использовать метод извлечения. Как и метод get, null будет возвращен, если элемент не существует в кеше:

Сохранение элементов в кэше

Вы можете использовать метод put на фасаде Cache для хранения элементов в кеше:

Если время хранения не передается методу put, элемент будет храниться бесконечно:

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

Сохранить, если нет

Метод add добавит элемент в кеш только в том случае, если он еще не существует в хранилище кеша. Метод вернет true, если элемент действительно добавлен в кеш. В противном случае метод вернет false. Метод add является атомарной операцией:

Постоянное хранение объектов

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

Если вы используете драйвер Memcached, элементы, хранящиеся «навсегда», могут быть удалены, когда размер кеша достигнет предела.

Удаление элементов из кэша

Вы можете удалить элементы из кеша, используя метод забывания:

Вы также можете удалить элементы, указав нулевое или отрицательное число секунд истечения срока действия:

Вы можете очистить весь кеш, используя метод очистки:

Очистка кеша не учитывает настроенный вами «префикс» кеша и удалит все записи из кеша. Учитывайте это внимательно при очистке кэша, который используется другими приложениями.

Помощник кэша

Помимо использования фасада Cache, вы также можете использовать функцию глобального кеша для извлечения и сохранения данных через кеш. Когда функция кеша вызывается с одним строковым аргументом, она возвращает значение данного ключа:

Если вы предоставите функции массив пар ключ/значение и время истечения срока действия, она будет хранить значения в кеше в течение указанного времени:

Когда функция кэширования вызывается без каких-либо аргументов, она возвращает экземпляр реализации Illuminate\Contracts\Cache\Factory, что позволяет вызывать другие методы кэширования:

При тестировании вызова функции глобального кеша вы можете использовать метод Cache::shouldReceive точно так же, как если бы вы тестировали фасад.

Теги кеша

Теги кэша не поддерживаются при использовании файлов, dynamodb или драйверов кэша базы данных. Кроме того, при использовании нескольких тегов с кешем, который хранится «навсегда», производительность будет наилучшей при использовании такого драйвера, как memcached , который автоматически очищает устаревшие записи.

Хранение тегированных элементов кэша

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

Доступ к элементам кэша с тегами

Чтобы получить тегированный элемент кэша, передайте тот же упорядоченный список тегов методу tags, а затем вызовите метод get с ключом, который вы хотите получить:

Удаление тегированных элементов кэша

Вы можете сбросить все элементы, которым назначен тег или список тегов. Например, этот оператор удалит все кеши, помеченные либо людьми, либо авторами, либо теми и другими. Таким образом, и Анна, и Джон будут удалены из кеша:

Наоборот, этот оператор удалит только кэшированные значения, помеченные авторами , поэтому будет удалена Энн, но не Джон :

Атомные замки

Чтобы использовать эту функцию, ваше приложение должно использовать драйвер кеша memcached , redis , dynamodb , базы данных , файла или массива в качестве драйвера кеша вашего приложения по умолчанию. Кроме того, все серверы должны обмениваться данными с одним и тем же сервером центрального кэша.

Предварительные требования к драйверу

База данных

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

Управление замками

Атомарные блокировки позволяют манипулировать распределенными блокировками, не беспокоясь о состоянии гонки. Например, Laravel Forge использует атомарные блокировки, чтобы гарантировать, что на сервере одновременно выполняется только одна удаленная задача. Вы можете создавать блокировки и управлять ими с помощью метода Cache::lock:

Метод get также принимает замыкание. После выполнения закрытия Laravel автоматически снимет блокировку:

Если блокировка недоступна в тот момент, когда вы ее запрашиваете, вы можете указать Laravel подождать определенное количество секунд. Если блокировка не может быть получена в течение указанного срока, будет выдано исключение Illuminate\Contracts\Cache\LockTimeoutException:

Приведенный выше пример можно упростить, передав замыкание блочному методу. Когда замыкание передается этому методу, Laravel попытается получить блокировку на указанное количество секунд и автоматически снимет блокировку после выполнения замыкания:

Управление блокировками процессов

Иногда может потребоваться установить блокировку в одном процессе и снять ее в другом процессе. Например, вы можете получить блокировку во время веб-запроса и хотите снять блокировку в конце задания в очереди, которое инициируется этим запросом. В этом сценарии вы должны передать «токен владельца» блокировки в задание, поставленное в очередь, чтобы задание могло повторно создать блокировку, используя данный токен.

В приведенном ниже примере мы отправим поставленное в очередь задание, если блокировка будет успешно получена. Кроме того, мы передадим токен владельца замка поставленному в очередь заданию с помощью метода владельца замка:

В рамках задания ProcessPodcast нашего приложения мы можем восстановить и снять блокировку, используя токен владельца:

Если вы хотите снять блокировку, не уважая ее текущего владельца, вы можете использовать метод forceRelease:

Добавление пользовательских драйверов кэша

Написание драйвера

Чтобы создать собственный драйвер кэша, нам сначала нужно реализовать контракт Illuminate\Contracts\Cache\Store. Итак, реализация кэша MongoDB может выглядеть примерно так:

Нам просто нужно реализовать каждый из этих методов, используя соединение MongoDB. В качестве примера того, как реализовать каждый из этих методов, взгляните на Illuminate\Cache\MemcachedStore в исходном коде фреймворка Laravel. Как только наша реализация будет завершена, мы можем завершить регистрацию пользовательского драйвера, вызвав метод расширения фасада Cache:

Если вам интересно, куда поместить код пользовательского драйвера кэширования, вы можете создать пространство имен Extensions в каталоге вашего приложения. Однако имейте в виду, что Laravel не имеет жесткой структуры приложения, и вы можете организовать свое приложение в соответствии со своими предпочтениями.

Регистрация драйвера

Чтобы зарегистрировать пользовательский драйвер кэша в Laravel, мы будем использовать метод extend на фасаде Cache. Поскольку другие поставщики услуг могут попытаться прочитать кэшированные значения в своем методе загрузки, мы зарегистрируем наш пользовательский драйвер в обратном вызове загрузки. Используя обратный вызов загрузки, мы можем гарантировать, что пользовательский драйвер будет зарегистрирован непосредственно перед вызовом метода загрузки для поставщиков услуг нашего приложения, но после вызова метода регистрации для всех поставщиков услуг. Мы зарегистрируем наш загрузочный обратный вызов в методе register класса App\Providers\AppServiceProvider нашего приложения:

Первым аргументом, передаваемым методу расширения, является имя драйвера. Это будет соответствовать вашему параметру драйвера в файле конфигурации config/cache.php. Второй аргумент — это замыкание, которое должно возвращать экземпляр Illuminate\Cache\Repository. Замыканию будет передан экземпляр $app, который является экземпляром сервисного контейнера.

После того как ваше расширение будет зарегистрировано, обновите параметр драйвера файла конфигурации config/cache.php, указав имя вашего расширения.

События

Чтобы выполнить код для каждой операции с кэшем, вы можете прослушивать события, запускаемые кэшем. Как правило, эти прослушиватели событий следует размещать в классе App\Providers\EventServiceProvider вашего приложения:

Laravel – это платформа веб-приложений с выразительным и элегантным синтаксисом. Мы считаем, что разработка должна быть приятным и творческим опытом, чтобы быть действительно полезным. Laravel пытается облегчить разработку, упрощая общие задачи, используемые в большинстве веб-проектов.

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

Я хочу очистить кеш представлений.

Я видел почти такой же вопрос, но он мне не помогает.

Запускать Laravel на виртуальном хостинге — безумие, IMO, именно по этой причине. Как вы выполняете миграцию?

@ceejayoz .. На самом деле я только начал этот проект, и это мой первый проект на laravel. Я еще не дошел до этой темы миграции..

"Запускать Laravel на виртуальном хостинге - безумие" @ceejayoz . Но это реальный мир. Иногда приходится, потому что выбора нет.

20 ответов 20

Команду Artisan можно вызвать вне интерфейса командной строки.

Обновить

Нельзя удалить кеш представления. Ни php artisan cache:clear этого не делает.

Если вы действительно хотите очистить кеш представления, я думаю, вам нужно написать свою собственную команду artisan и вызвать ее, как я сказал ранее, или полностью пропустить путь artisan и очистить кеш представления в каком-то классе, который вы вызываете из контроллер или маршрут.

Но мой настоящий вопрос: действительно ли вам нужно очищать кеш представления? В проекте, над которым я сейчас работаю, у меня есть почти 100 кешированных представлений, и они весят менее 1 МБ, а мой каталог поставщиков > 40 МБ. Я не думаю, что кеш просмотра является реальным узким местом в использовании диска, и у меня никогда не было реальной необходимости его очищать.

Что касается кеша приложения, он хранится в каталоге storage/framework/cache, но только если вы настроили драйвер файла в config/cache.php . Вы можете выбрать множество различных драйверов, таких как Redis или Memcached, для повышения производительности по сравнению с файловым кешем.

Какой кеш вы пытаетесь очистить? Команда cache:clear работает с кэшем приложения, доступ к которому осуществляется из фасада Cache.

Я хочу очистить кеш просмотра, в папке кеша просмотра сохранено много страниц. Еще один вопрос, когда говорится о кеше приложения, на какие каталоги он нацелен.

Спасибо за объяснение!.Я не беспокоюсь о дисковом пространстве :) Но один вопрос, если кеш представления не очищается, то как новые изменения в представлении влияют на веб-сайт, происходит ли какая-либо проверка ввода-вывода в laravel?

"Нельзя удалить кеш представления" Это просто неправда. Для этого вы можете использовать php artisan view:clear.

Перейдите в папку laravelFolder/bootstrap/cache, затем переименуйте config.php во что угодно, например. config.php_old и перезагрузите свой сайт. Это должно работать как вуду.

Подтверждено, что он стирает боль в заднице при размещении laravel 5.4 с Windows на виртуальный хостинг. СПАСИБО.

Похоже, что в некоторых случаях это единственное работающее решение. Если у вас есть кэшированная конфигурация, а затем вы удаляете фасад или поставщик услуг, когда вы запускаете команду для создания новой кэшированной конфигурации, она запускается с использованием существующей кэшированной конфигурации и пытается ссылаться на классы фасада и/или поставщика услуг, которые больше не существует и не работает. Другой вариант — удалить ссылки из файла конфигурации, повторно сгенерировать кэшированную конфигурацию, а затем удалить фактические классы Facade и/или Service Provider.

Для Laravel 6.6, чтобы удалить кеширование, я просто удалил папку кеша и значение кеша по умолчанию в файле .env. Но после удаления всего этого снова возникает проблема ... когда php artisan optimise . Наконец, это решило мою проблему, не переименовав, а изменив значение ключа в файле config.php. Спасибо @DeadGuy

можно ли использовать приведенный ниже код с новыми командами очистки кеша:

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

У меня проблема с config:cache, он не работает в маршруте или контроллере, но другие работают. в чем может быть проблема?

Кэширование конфигурации Конфигурация laravel распространяется на десятки файлов, и включение каждого из них для каждого запроса является дорогостоящим процессом. Чтобы объединить все ваши файлы конфигурации в один, используйте:

Имейте в виду, что любые изменения в конфигурации не будут иметь никакого эффекта после кэширования. Чтобы обновить кеш конфигурации, снова запустите указанную выше команду. Если вы хотите полностью избавиться от кэша конфигурации, запустите

Кэширование маршрутов Маршрутизация также является дорогостоящей задачей в laravel. Чтобы кэшировать файл route.php, выполните следующую команду:

Учтите, что это не работает с замыканиями. Если вы используете замыкания, это отличный шанс переместить их в контроллер, так как команда artisan выдаст исключение при попытке скомпилировать маршруты, привязанные к замыканиям, а не к правильным методам контроллера. Как и в кеше конфигурации, любые изменения в route.php больше не будут иметь никакого эффекта. Чтобы обновить кеш, запускайте приведенную выше команду каждый раз, когда вы вносите изменения в файл маршрутов. Чтобы полностью избавиться от кэша маршрутов, выполните следующую команду:

Оптимизация карты классов

Нередко проекты среднего размера рассредоточены по сотням файлов PHP. Как диктует нам хорошее поведение при кодировании, у всего есть свой собственный файл. Это, конечно, не обходится без недостатков. Laravel должен включать десятки разных файлов для каждого запроса, что требует больших затрат.

Следовательно, хороший метод оптимизации — указать, какие файлы используются для каждого запроса (это, например, все ваши поставщики услуг, промежуточное ПО и некоторые другие), и объединить их в один файл, который впоследствии будет загружен для каждый запрос. Это ничем не отличается от объединения всех ваших файлов javascript в один, поэтому браузеру придется делать меньше запросов к серверу.

Дополнительные файлы компиляции (опять же: поставщики услуг, промежуточное ПО и т. д.) должны быть объявлены вами в config/compile.php, в ключе files. После того, как вы поместите туда все необходимое для каждого запроса к вашему приложению, объедините их в один файл с помощью:

Оптимизация автозагрузки композитора

Это не только для laravel, но и для любого приложения, использующего композитор.

Сначала я объясню, как работает автозагрузка PSR-4, а затем покажу вам, какую команду следует выполнить для ее оптимизации. Если вам не интересно знать, как работает композитор, я рекомендую сразу перейти к консольной команде.

Когда вы запрашиваете у Composer класс App\Controllers\AuthController, он сначала ищет прямую связь в карте классов. Карта классов представляет собой массив с однозначными ассоциациями классов и файлов. Поскольку, конечно, вы не добавили вручную класс Login и связанный с ним файл в карту классов, композитор продолжит поиск в пространствах имен. Поскольку App — это пространство имен PSR-4, которое по умолчанию поставляется с Laravel и связано с папкой app/, композитор попытается преобразовать имя класса PSR-4 в имя файла с помощью основных процедур обработки строк. В итоге предполагается, что App\Controllers\AuthController должен находиться в AuthController.php, который находится в папке Controllers/, которая, к счастью, должна находиться в папке пространства имен app/ .

Вся эта тяжелая работа только для того, чтобы класс App\Controllers\AuthController существовал в файле app/Controllers/AuthController.php. Чтобы Composer сканировал все ваше приложение и создавал прямые ассоциации классов и файлов один к одному, выполните следующую команду:

Имейте в виду, что если вы уже запустили php artisan optimise --force, вам больше не нужно запускать его. Так как команда optimise уже говорит композитору создать оптимизированную автозагрузку.

Читайте также: