I’ve been learning the Laravel framework recently and made a project myself, summarizing some methods to improve the performance of Laravel websites. This article mainly introduces to you some methods for optimizing the opening speed of Laravel website. The introduction in the article is very detailed. Friends in need can refer to it. Let’s take a look together. I hope to be helpful.
Preface
Laravel is a powerful framework with many components and huge code. Its ease of use comes at the expense of performance. Yes, even so it is still an excellent framework, but in a formal environment it must be optimized to improve the opening speed of the website. The following article mainly introduces you to some methods and techniques for optimizing the opening speed of Laravel website. Without further ado, let’s take a look at the detailed introduction:
1. Turn off debug
Open the .env file and set debug to false.
APP_ENV=local APP_DEBUG=false APP_KEY=base64:sT/aTFeaE13eyao1Raee6jC9Ff+Yle1SE+wtyk0H6B4=
2. Cache routing and configuration
php artisan route:cache php artisan config:cache
3. Laravel optimization commands
php artisan optimize
4. Composer optimization
sudo composer dump-autoload --optimize
5. Use Laravel cache
Use Laravel's Cache method to cache content, including file cache, database cache, redis cache, and redis. You can also use predis components , and can also be combined with multiple caching methods.
$lists = Cache::remember('travel.destination.lists', 20, function () { return $this->destination->getList(); });
6. Use CDN
Qiniu CDN will give you 20G traffic and 20G storage space every month. For small sites, Totally enough.
7. Use PHP 7 and turn on OPcache
Several tips to improve the performance of PHP 7, the first one is to turn on opache, quoted below Original text:
Remember to enable Zend Opcache, because PHP7 is faster even without Opcache than PHP-5.6 with Opcache enabled, so during the previous testing period, someone did not enable Opcache.
My Alibaba Cloud server is PHP 7 provided through a centos source called remi. Opcache is not installed by default. Use the yum list yum70*
command to search and it turns out that it is there, so I installed it:
yum install php70-php-opcache.x86_64
Then restart php-fpm and use the service php70-php-fpm restart
command. (Different systems and environments install and enable opache according to their own circumstances)
Create a new php file and use the phpinfo() function to display the php.ini information. If OPcache can be found item, indicating that it was successfully enabled. Installing and enabling PHP 7 is to add another wing to PHP 7!
8. Turn on gzip compression on nginx
Turning on gzip compression on Nginx on the server is one of the ways to optimize website performance and can effectively reduce server bandwidth. The disadvantage is that it will increase the CPU occupancy rate, but in many cases the CPU is often idle the most.
Quote from the introduction of nginx official website:
The ngx_http_gzip_module module is a filter that compresses responses using the “gzip” method. This often helps to reduce the size of transmitted data by half or even more.
Enable gzip compression in Nginx
Open the nginx.conf file and add the following:
gzip on; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 9; gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on;
gzip parameter introduction
GZIP ON|OFF
Turn on or off the gzip module
GZIP_MIN_LENGTH 1000
Set allowed The minimum number of bytes of the compressed page. The number of bytes of the page is obtained from the Content-Length in the header. The default value is 0, which compresses the page regardless of its size. It is recommended to set the number of bytes to be greater than 1k. If it is less than 1k, it may become more and more compressed. That is: gzip_min_length 1024
GZIP_PROXIED EXPIRED NO-CACHE NO-STORE PRIVATE AUTH;
Nginx is enabled when used as a reverse proxy, and is returned by turning on or off the back-end server. As a result, the prerequisite for matching is that the backend server must return a header containing "Via".
GZIP_TYPES TEXT/PLAIN APPLICATION/XML;
Matches the MIME type for compression, (whether specified or not) the "text/html" type will always be compressed.
Determine whether to enable gzip compression through the browser
For example, in Firefox, open a web page and open the debug control bar, as shown in the figure:
The Content-Encoding field is gzip, indicating that the web page is gzip compressed.
This is not just a performance optimization method for Laravel websites. Many of them are general website performance optimization methods. Of course, there are many places that can be optimized.
Related recommendations:
Detailed explanation of how Laravel implements supervisor execution of asynchronous processes
Detailed explanation of how to use Laravel to implement simple form submission
##Laravel optimized split routing file
The above is the detailed content of A brief analysis of Laravel project speed optimization. For more information, please follow other related articles on the PHP Chinese website!