As a web developer, you must know the importance of website performance to user experience and search engine rankings. To maintain a high-performance website, regular performance testing is required to detect and optimize website performance. Well, in this article, we will introduce how to use PHP and Lighthouse for website performance testing.
Lighthouse is an open source tool developed by Google for testing the quality and performance of web applications. It not only tests the speed of a web page, but also evaluates its accessibility, best practices, and search engine optimization. Generally speaking, we can use Lighthouse in Chrome browser, but if you need to integrate Lighthouse testing into your CI/CD pipeline or script, PHP is a good choice.
First of all, you need to make sure you have installed PHP and have some basic knowledge of PHP. Next, we need to install the Lighthouse PHP package. You can do it using the following command in the terminal:
composer require nunomaduro/laravel-mix-phplighthouse --dev
Here we use the nunomaduro/laravel-mix-phplighthouse package because it provides simple and easy-to-use commands to run Lighthouse tests and can easily Integrated with Laravel Mix. If you are not using Laravel Mix, consider using other PHP Lighthouse packages.
After the installation is complete, we need to set some configuration options of Lighthouse. Create a lighthouse.php file in the root directory of the project and add the following content:
<?php return [ 'temp_dir' => 'storage/app/lighthouse', 'chrome_path' => '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', 'chrome_flags' => [ '--show-paint-rects', '--headless', ], 'audits' => [ 'first-contentful-paint', 'largest-contentful-paint', 'first-meaningful-paint', 'speed-index', 'total-blocking-time', 'cumulative-layout-shift', 'interactive', 'uses-long-cache-ttl', 'user-timings', 'critical-request-chains', 'redirects', 'content-width', 'font-display', 'optimal-images', ], ];
In this configuration file, we define several options:
Next, create a file named test.php in the root directory of the project and add the following content:
<?php require_once __DIR__.'/vendor/autoload.php'; use NunoMaduroPHPUnitLaravelTestCasesBrowserTestCase; class LighthouseTest extends BrowserTestCase { public function testPerformance() { $this->artisan('lighthouse https://www.example.com --json --no-interaction'); $output = json_decode(file_get_contents(base_path('storage/app/lighthouse/report.json')), true); $this->assertArrayHasKey('audits', $output['categories']); } }
In this file we created a file named LighthouseTest Test class, in this class, we define a test method called testPerformance. In this method, we use Artisan commands to run Lighthouse tests and save the results in JSON format to the specified directory. We then use the assertArrayHasKey method to check whether the Audits section is included in the test results.
Now you can run the test. Use the following command in the terminal to run the test:
./vendor/bin/phpunit --filter=LighthouseTest
This will run the testPerformance test method in the LighthouseTest test class we just created. If everything goes well, you will see that the test passed and a report.json file was generated in the storage/app/lighthouse directory, containing detailed information about the test results.
In addition to using the command line, we can also integrate Lighthouse testing into our PHP applications. Suppose we have a script named performancelog.php to record the performance of each page, then we can add the following code in this script to run the Lighthouse test:
require_once __DIR__.'/vendor/autoload.php'; use NunoMaduroPHPUnitLaravelTestCasesBrowserTestCase; class LighthouseTest extends BrowserTestCase { public function run() { $url = 'https://www.example.com'; $this->artisan("lighthouse {$url} --json --no-interaction"); $output = json_decode(file_get_contents(base_path('storage/app/lighthouse/report.json')), true); $categories = array_intersect_key($output['categories'], array_flip(['performance'])); $score = array_sum(array_column($categories['performance']['auditRefs'], 'score')) / count($categories['performance']['auditRefs']); file_put_contents('performance.log', "{$url}: {$score} ", FILE_APPEND); } } $LighthouseTest = new LighthouseTest; $LighthouseTest->run();
In this example, we use Lighthouse test The specified URL and log the score to the performance.log file. You can run this script periodically to monitor the performance of your web application.
In this article, we introduce how to use PHP and Lighthouse for website performance testing. Whether you are a web developer or a system administrator, you can use this tutorial to instrument and optimize the performance of your web applications.
The above is the detailed content of How to use PHP and Lighthouse for website performance testing. For more information, please follow other related articles on the PHP Chinese website!