Rumah > rangka kerja php > Laravel > Cara menggunakan perisian tengah untuk pemampatan data dalam Laravel

Cara menggunakan perisian tengah untuk pemampatan data dalam Laravel

王林
Lepaskan: 2023-11-04 08:52:10
asal
562 orang telah melayarinya

Cara menggunakan perisian tengah untuk pemampatan data dalam Laravel

Dalam pembangunan web, penghantaran data adalah pautan yang sangat penting. Dengan perkembangan Internet, semakin ramai orang mula menggunakan peranti mudah alih untuk akses, yang juga telah menyebabkan jumlah penghantaran data menjadi lebih besar dan lebih besar. Oleh itu, pemampatan data telah menjadi cara yang diperlukan untuk mengoptimumkan laman web.

Dalam Laravel, menggunakan perisian tengah untuk mencapai pemampatan data ialah kaedah biasa. Artikel ini akan memperkenalkan cara menggunakan perisian tengah untuk pemampatan data dalam Laravel.

Apakah itu middleware?

Dalam Laravel, middleware ialah mekanisme untuk menapis permintaan HTTP. Ia boleh memeriksa permintaan, mengubah suai permintaan atau melakukan tindakan tertentu sebelum atau selepas permintaan. Biasanya, middleware digunakan untuk operasi seperti mengesahkan identiti pengguna, menyemak kebenaran pengguna dan menyepadukan perkhidmatan pihak ketiga.

Dalam Laravel, anda boleh mencipta middleware dengan melaksanakan arahan berikut:

php artisan make:middleware <MiddlewareName>
Salin selepas log masuk

Selepas arahan itu dilaksanakan, fail middleware baharu akan dijana dalam direktori app/Http/Middleware. Dengan mentakrifkan kaedah pemegang kelas middleware, anda boleh melakukan beberapa operasi sebelum atau selepas permintaan mencapai aplikasi.

Mula menggunakan perisian tengah untuk pemampatan data

Dalam Laravel, anda boleh menggunakan perisian tengah untuk pemampatan data melalui langkah berikut:

Langkah 1: Cipta kelas perisian tengah pemampatan

Pertama, cipta perisian tengah bernama jenis CompressionMiddleware. Dalam kelas ini, kami akan mentakrifkan kaedah pemegang untuk memampatkan data tindak balas. Berikut ialah contoh:

<?php

namespace AppHttpMiddleware;

use Closure;

class CompressionMiddleware
{
    /**
     * 处理传入的请求
     *
     * @param IlluminateHttpRequest $request
     * @param Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // 检查浏览器是否支持 gzip 压缩
        $encodings = explode(',', $request->header('Accept-Encoding'));
        if (in_array('gzip', $encodings)) {
            $buffer = ob_get_contents();
            ob_end_clean();
            $gziped = gzencode($buffer, 9);
            $response->header('Content-Encoding', 'gzip');
            $response->header('Content-Length', strlen($gziped));
            $response->setContent($gziped);
        }

        return $response;
    }
}
Salin selepas log masuk

Berikut ialah beberapa penjelasan tentang kod:

  1. Dalam kaedah pemegang, kaedah yang diluluskan dalam $next($request) mula-mula dilaksanakan untuk mendapatkan kandungan respons.
  2. Seterusnya, semak sama ada penyemak imbas menyokong pemampatan gzip. Jika penyemak imbas menyokongnya, kandungan respons akan dimampatkan dan pengepala respons yang sepadan ditambah.
  3. Akhir sekali, kembalikan kandungan termampat kepada penyemak imbas melalui kaedah $response->setContent().

Nota

Dalam kod di atas, fungsi ob_* digunakan untuk menangkap kandungan penimbal dan mengosongkan penimbal selepas pemprosesan selesai. Ini kerana PHP secara automatik mengeluarkan kandungan penimbal kepada penyemak imbas selepas skrip dilaksanakan, dan pemampatan tidak boleh dilakukan tanpa menangkap kandungan penimbal.

Langkah 2: Daftar middleware

Seterusnya, daftar middleware yang kami buat ke dalam aplikasi. Semua perisian tengah ditakrifkan dalam fail app/Http/Kernel.php, dan kumpulan perisian tengah baharu boleh didaftarkan untuk aplikasi melalui atribut $middlewareGroups. Berikut ialah contoh:

protected $middlewareGroups = [
    // ...
    'web' => [
        // ...
        AppHttpMiddlewareCompressionMiddleware::class,
    ],
    // ...
];
Salin selepas log masuk

Ini akan menambah perisian tengah CompressionMiddleware pada kumpulan perisian tengah web. Perisian tengah ini memampatkan respons apabila permintaan mencapai aplikasi.

Uji mampatan data

Kami boleh memulakan permintaan akses dalam penyemak imbas dan menggunakan alat pembangun untuk menyemak sama ada maklumat pengepala respons muncul Content-Encoding:gzip.

Anda boleh melihat bahawa maklumat pengepala respons mengandungi medan Content-Encoding:gzip, yang menunjukkan bahawa respons kepada permintaan telah dimampatkan. Pada masa yang sama, kandungan dalam badan respons juga akan menjadi format termampat.

Kesimpulan

Melalui perisian tengah, kami boleh melaksanakan operasi pemampatan data dengan mudah. Dalam pembangunan sebenar, algoritma mampatan boleh dioptimumkan mengikut keadaan tertentu untuk meningkatkan kecekapan mampatan.

Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk pemampatan data dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan