Laravel 9 contains a set of commands that optimize the operation of the application for better project performance. In this article I will explain how some of these commands work, with special reference to "php artisan optimize". I will discuss where the cache files are stored and in what order they should be executed during deployment.The optimization files generated by the commands are stored in the bootstrap/cache/ directory.
The "php artisan optimize" command is no longer needed due to recent improvements in the PHP opcode cache. The latest Laravel documentation advises against using this command, although it can still be used in Laravel 9.
"php artisan optimize" creates or overwrites the bootstrap/cache/config.php file. Additionally, this command also creates or overwrites bootstrap/cache/routes-v7.php. This order is a sum of the following 2 orders:
When we are working in local environment in our Laravel project, if we create a new route we get this error:
To solve this we can run: "php artisan route:cache" which will overwrite and add the new route created in the bootstrap/cache/routes-v7.php file.
On the other hand, we can also run "php artisan optimize" which, as I said before, includes the above command.
Execute these commands on the server
Sometimes we have to provide our project with new functionalities that require the definition of new routes when the project is already in production. We may also find that our hosting service consists of a shared server and we do not have access to your terminal. That is, we can't run the optimization commands we've seen, and therefore can't include the new routes. If we find ourselves in this case, a solution would be to upload the following file every time we run the command related to the routes:
By default bootstrap/cache folder contains a "gitignore" file. So you can update manually via FTP or simply delete the gitignore file from the folder so that the "git" application can track it.
If we can't run the Laravel optimization commands on the server because we don't have access to the terminal, we need to update the "bootstrap/cache/" files that were changed when running the commands in local environment.