Rumah > rangka kerja php > Laravel > Contoh yang menerangkan cara menggunakan caching pertanyaan dalam Laravel

Contoh yang menerangkan cara menggunakan caching pertanyaan dalam Laravel

PHPz
Lepaskan: 2023-04-09 10:30:02
asal
1235 orang telah melayarinya

Dengan pembangunan aplikasi web, skala data terus berkembang, menjadikan pertanyaan pangkalan data semakin memakan masa dan intensif sumber. Ini menyebabkan banyak aplikasi menjadi perlahan semasa membuat pertanyaan dan memaparkan data kerana setiap pertanyaan memerlukan mendapatkan semula sejumlah besar data daripada pangkalan data.

Sebagai pembangun Laravel, kami sering menghadapi masalah bagaimana untuk mengoptimumkan pertanyaan, terutamanya dalam pertanyaan penomboran. Laravel memberikan kami penyelesaian, caching pertanyaan.

Cache pertanyaan membolehkan kami menyimpan hasil cache apabila menanyakan keadaan yang sama beberapa kali, dengan itu mengelakkan pertanyaan yang tidak perlu dan beban pangkalan data. Ini amat berguna untuk aplikasi web yang besar, yang selalunya perlu menanyakan sejumlah besar data.

Dalam Laravel, caching pertanyaan dilaksanakan melalui fasad Cache. Fasad Cache boleh digunakan dengan pelbagai pemacu cache, termasuk Fail, Memcached, Redis dan banyak lagi. Laravel secara automatik memilih pemacu cache yang paling sesuai dengan keadaan semasa.

Mari kita lihat contoh untuk menunjukkan cara menggunakan caching pertanyaan dalam Laravel.

Pertama, kita perlu mentakrifkan pertanyaan dalam model kami, contohnya:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function getPriceRange($minPrice, $maxPrice)
    {
        return $this->whereBetween('price', [$minPrice, $maxPrice])
                    ->orderBy('price', 'desc')
                    ->paginate(10);
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami telah menentukan pertanyaan yang dipanggil "getPriceRange" yang Pilih produk dengan harga antara $minPrice dan $maxPrice. Selain itu, kami mengisih hasil dalam susunan menurun dan menggunakan fungsi penomboran Laravel untuk membahagikan hasil kepada 10 setiap halaman.

Sekarang kita boleh memanggil pertanyaan ini dalam pengawal dan cachenya supaya ia boleh diakses dengan cepat pada kali seterusnya kita menyoalnya. Kita boleh menggunakan fasad Cache untuk melakukan ini.

namespace App\Http\Controllers;

use App\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;

class ProductController extends Controller
{
    public function index(Request $request)
    {
        $minPrice = $request->input('min_price');
        $maxPrice = $request->input('max_price');

        $key = 'price_range_' . $minPrice . '_' . $maxPrice;
        $minutes = 60;

        $products = Cache::remember($key, $minutes, function() use ($minPrice, $maxPrice) {
            return (new Product)->getPriceRange($minPrice, $maxPrice);
        });

        return view('products.index', ['products' => $products]);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah "ingat" muka hadapan Cache untuk cache hasil pertanyaan kami. Parameter pertama ialah rentetan yang ingin kami gunakan sebagai kunci cache, parameter kedua ialah bilangan minit yang kami mahu keputusan dicache dan parameter ketiga ialah penutupan yang mengembalikan hasil pertanyaan kami.

Ini bermakna jika kami mempunyai permintaan lain untuk menanyakan julat harga yang sama, Laravel akan mengembalikan hasil terus daripada cache. Ini akan meningkatkan prestasi dan kelajuan aplikasi kami dengan ketara.

Caching pertanyaan ialah ciri yang sangat berguna dalam Laravel. Menggunakannya, kami boleh mengelakkan pertanyaan dan beban pangkalan data yang tidak perlu, meningkatkan prestasi dan kelajuan aplikasi kami. Dengan menguasai petua mudah ini, kami boleh menjadikan kerjaya pembangun kami lebih mudah dan menyeronokkan.

Atas ialah kandungan terperinci Contoh yang menerangkan cara menggunakan caching pertanyaan 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