Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP dan Rumah Api untuk ujian prestasi laman web

Cara menggunakan PHP dan Rumah Api untuk ujian prestasi laman web

WBOY
WBOYasal
2023-06-19 15:36:00839semak imbas

Sebagai pembangun web, anda mesti tahu kepentingan prestasi tapak web kepada pengalaman pengguna dan kedudukan enjin carian. Untuk mengekalkan tapak web berprestasi tinggi, ujian prestasi tetap diperlukan untuk mengesan dan mengoptimumkan prestasi tapak web. Nah, dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Rumah Api untuk ujian prestasi laman web.

Lighthouse ialah alat sumber terbuka yang dibangunkan oleh Google untuk menguji kualiti dan prestasi aplikasi web. Ia bukan sahaja menguji kelajuan halaman web, tetapi juga menilai kebolehcapaian, amalan terbaik dan pengoptimuman enjin cariannya. Secara umumnya, kami boleh menggunakan Lighthouse dalam penyemak imbas Chrome, tetapi jika anda perlu menyepadukan ujian Lighthouse ke dalam saluran paip atau skrip CI/CD anda, PHP ialah pilihan yang baik.

Pertama sekali, anda perlu memastikan anda telah memasang PHP dan mempunyai pengetahuan asas tentang PHP. Seterusnya, kita perlu memasang pakej Lighthouse PHP. Anda boleh melakukannya menggunakan arahan berikut dalam terminal:

composer require nunomaduro/laravel-mix-phplighthouse --dev

Di sini kami menggunakan pakej nunomaduro/laravel-mix-phplighthouse kerana ia menyediakan arahan yang ringkas dan mudah untuk menjalankan ujian Lighthouse dan boleh Disepadukan dengan Laravel Mix dengan mudah . Jika anda tidak menggunakan Laravel Mix, pertimbangkan untuk menggunakan pakej PHP Lighthouse yang lain.

Selepas pemasangan selesai, kami perlu menetapkan beberapa pilihan konfigurasi Rumah Api. Cipta fail lighthouse.php dalam direktori akar projek dan tambah kandungan berikut:

<?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',
    ],
];

Dalam fail konfigurasi ini, kami mentakrifkan beberapa pilihan:

  • temp_dir: Tentukan Rumah Api The direktori tempat data ujian disimpan.
  • chrome_path: Tentukan lokasi penyemak imbas Chrome.
  • chrome_flags: Tentukan beberapa parameter penyemak imbas Chrome, contohnya --tanpa kepala bermaksud berjalan dalam mod tanpa kepala.
  • audit: Nyatakan item audit yang digunakan dalam ujian Rumah Api. Di sini kami telah memilih beberapa item audit yang biasa digunakan, anda boleh menambah atau memadamnya mengikut keperluan anda.

Seterusnya, buat fail bernama test.php dalam direktori akar projek dan tambah kandungan berikut:

<?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']);
    }
}

Dalam fail ini kami mencipta fail bernama LighthouseTest Test kelas, dalam kelas ini, kami mentakrifkan kaedah ujian yang dipanggil testPerformance. Dalam kaedah ini, kami menggunakan perintah Artisan untuk menjalankan ujian Rumah Api dan menyimpan keputusan dalam format JSON ke direktori yang ditentukan. Kami kemudian menggunakan kaedah assertArrayHasKey untuk menyemak sama ada bahagian Audit disertakan dalam keputusan ujian.

Anda kini boleh menjalankan ujian. Gunakan arahan berikut dalam terminal untuk menjalankan ujian:

./vendor/bin/phpunit --filter=LighthouseTest

Ini akan menjalankan kaedah ujian testPerformance dalam kelas ujian LighthouseTest yang baru kami buat. Jika semuanya berjalan lancar, anda akan melihat bahawa ujian itu lulus dan fail report.json telah dijana dalam direktori storan/apl/rumah api, yang mengandungi maklumat terperinci tentang keputusan ujian.

Selain menggunakan baris arahan, kami juga boleh menyepadukan ujian Lighthouse ke dalam aplikasi PHP kami. Katakan kita mempunyai skrip bernama performancelog.php untuk merekod prestasi setiap halaman, maka kita boleh menambah kod berikut dalam skrip ini untuk menjalankan ujian Rumah Api:

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();

Dalam contoh ini, kami menggunakan ujian Rumah Api yang ditentukan URL dan log skor ke fail performance.log. Anda boleh menjalankan skrip ini secara berkala untuk memantau prestasi aplikasi web anda.

Dalam artikel ini, kami memperkenalkan cara menggunakan PHP dan Rumah Api untuk ujian prestasi tapak web. Sama ada anda seorang pembangun web atau pentadbir sistem, anda boleh menggunakan tutorial ini untuk instrumen dan mengoptimumkan prestasi aplikasi web anda.

Atas ialah kandungan terperinci Cara menggunakan PHP dan Rumah Api untuk ujian prestasi laman web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn