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.
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>
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.
Dalam Laravel, anda boleh menggunakan perisian tengah untuk pemampatan data melalui langkah berikut:
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; } }
Berikut ialah beberapa penjelasan tentang kod:
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.
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, ], // ... ];
Ini akan menambah perisian tengah CompressionMiddleware pada kumpulan perisian tengah web. Perisian tengah ini memampatkan respons apabila permintaan mencapai aplikasi.
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.
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!