Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Bagaimana untuk mengelakkan caching dalam jquery

Bagaimana untuk mengelakkan caching dalam jquery

PHPz
PHPzasal
2023-05-28 13:21:38684semak imbas

Dengan pembangunan pembangunan web, rangka kerja bahagian hadapan jquery telah digunakan secara meluas dalam banyak laman web. Walau bagaimanapun, apabila menggunakan jquery untuk meminta data, kami sering menghadapi masalah caching. Jika tidak dikendalikan dalam masa, masalah caching akan menyebabkan halaman memaparkan ralat atau tidak dikemas kini. Artikel ini akan memperkenalkan cara jquery menghalang caching dan prinsipnya.

1. Apakah itu cache

Sebelum memperkenalkan cara menghalang cache, mari kita fahami dahulu apa itu cache. Apabila mengakses tapak web, penyemak imbas akan menyimpan data yang diakses (gambar, skrip, gaya, dll.) secara setempat supaya ia boleh dibaca terus dari kawasan setempat semasa lawatan seterusnya tanpa perlu meminta pelayan lagi, meningkatkan kelajuan akses. Proses ini dipanggil caching.

2. Cara jquery menghalang caching

Dalam jquery, cara utama kami menghalang caching adalah dengan menetapkan pengepala permintaan. Apabila membuat permintaan AJAX, dengan menetapkan parameter seperti "Cache-Control" dan "Expires" dalam pengepala permintaan, anda memberitahu penyemak imbas untuk tidak cache hasil permintaan, tetapi untuk mendapatkan data terkini daripada pelayan untuk setiap permintaan. Berikut ialah beberapa kod contoh:

1 Sekat caching dalam permintaan GET:

$.ajax({
    type: "GET",
    cache: false, //设置为false,即禁止缓存
    url: "http://www.example.com/get_data.php",
    success: function(data){
        //处理返回结果
    }
});

2 Sekat caching dalam permintaan POST:

$.ajax({
    type: "POST",
    cache: false, //设置为false,即禁止缓存
    url: "http://www.example.com/post_data.php",
    data: {
        "name": "张三",
        "age": 18
    },
    success: function(data){
        //处理返回结果
    }
});

3 caching:

$.ajax({
    type: "GET",
    url: "http://www.example.com/get_data.php",
    beforeSend: function(xhr){
        xhr.setRequestHeader("Cache-Control", "no-cache");
        xhr.setRequestHeader("Expires", "0");
    },
    success: function(data){
        //处理返回结果
    }
});

3 Prinsip menyekat caching

Setelah memahami cara menyekat caching, mari kita lihat prinsipnya. Apabila menetapkan "Cache-Control" dan "Expires" dalam pengepala permintaan, kami memberitahu penyemak imbas untuk tidak cache hasil permintaan. Fungsi kedua-dua pengepala permintaan ini ialah:

1. "Kawalan Cache"

Pengepala permintaan ini digunakan untuk menentukan mekanisme cache permintaan dan respons. Ia mempunyai nilai berikut:

(1) no-cache: Memaksa setiap permintaan untuk mendapatkan data terkini daripada pelayan tanpa menggunakan cache.

(2) umur maks: Tetapkan masa maksimum untuk sumber dicache pada klien, dalam beberapa saat.

(3) tiada kedai: Lumpuhkan penggunaan cache setempat.

2. "Tamat tempoh"

Pengepala permintaan ini menentukan masa tamat tempoh sumber, iaitu, data dalam cache akan digunakan sebelum masa ini. Jika penyemak imbas masih mengakses sumber selepas masa ini, permintaan dihantar ke pelayan.

Dengan menetapkan dua pengepala permintaan ini, kami boleh memberitahu penyemak imbas supaya tidak cache hasil permintaan dan mendapatkan data terkini daripada pelayan untuk setiap permintaan.

4. Ringkasan

Apabila membuat permintaan ajax, isu caching sering menyebabkan kita mengalami masalah. Dengan menetapkan "Cache-Control" dan "Expires" dalam pengepala permintaan, kami boleh menghalang cache dengan mudah supaya halaman dapat memaparkan data terkini dengan betul. Semoga artikel ini bermanfaat kepada semua.

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan caching dalam jquery. 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
Artikel sebelumnya:jquery menetapkan lebar dicArtikel seterusnya:jquery menetapkan lebar dic