Rumah  >  Soal Jawab  >  teks badan

fetch(), bagaimana untuk membuat permintaan bukan cache?

<p>Menggunakan <code>fetch('somefile.json')</code>, bolehkah saya meminta fail daripada pelayan dan bukannya cache penyemak imbas? </p> <p>Dalam erti kata lain, adakah mungkin untuk memintas cache penyemak imbas menggunakan <code>fetch()</code>? </p>
P粉214176639P粉214176639441 hari yang lalu449

membalas semua(2)saya akan balas

  • P粉731977554

    P粉7319775542023-08-28 17:40:52

    Lebih mudah untuk menggunakan mod cache:

    // Download a resource with cache busting, to bypass the cache
      // completely.
      fetch("some.json", {cache: "no-store"})
        .then(function(response) { /* consume the response */ });
    
      // Download a resource with cache busting, but update the HTTP
      // cache with the downloaded resource.
      fetch("some.json", {cache: "reload"})
        .then(function(response) { /* consume the response */ });
    
      // Download a resource with cache busting when dealing with a
      // properly configured server that will send the correct ETag
      // and Date headers and properly handle If-Modified-Since and
      // If-None-Match request headers, therefore we can rely on the
      // validation to guarantee a fresh response.
      fetch("some.json", {cache: "no-cache"})
        .then(function(response) { /* consume the response */ });
    
      // Download a resource with economics in mind!  Prefer a cached
      // albeit stale response to conserve as much bandwidth as possible.
      fetch("some.json", {cache: "force-cache"})
        .then(function(response) { /* consume the response */ });

    Rujukan: https://hacks.mozilla.org/2016/03/referrer-and-cache-control-apis-for-fetch/

    balas
    0
  • P粉395056196

    P粉3950561962023-08-28 10:56:27

    Fetch boleh mendapatkan objek init yang mengandungi banyak tetapan tersuai yang mungkin anda mahu gunakan pada permintaan anda, termasuk pilihan yang dipanggil "Pengepala".

    Pilihan "headers" mengambil objek Header. Objek ini membolehkan anda mengkonfigurasi pengepala untuk ditambahkan pada permintaan.

    Dengan menambah pragma: no-cache dan cache-control: no-cache dalam pengepala, anda memaksa penyemak imbas menyemak pelayan untuk melihat sama ada fail wujud berbeza daripada yang sudah ada dalam cache. Anda juga boleh menggunakan cache-control: no-store kerana ia tidak membenarkan penyemak imbas dan semua cache perantaraan untuk menyimpan sebarang versi respons yang dikembalikan.

    Berikut ialah contoh kod:

    var myImage = document.querySelector('img');
    
    var myHeaders = new Headers();
    myHeaders.append('pragma', 'no-cache');
    myHeaders.append('cache-control', 'no-cache');
    
    var myInit = {
      method: 'GET',
      headers: myHeaders,
    };
    
    var myRequest = new Request('myImage.jpg');
    
    fetch(myRequest, myInit)
      .then(function(response) {
        return response.blob();
      })
      .then(function(response) {
        var objectURL = URL.createObjectURL(response);
        myImage.src = objectURL;
      });
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>ES6</title>
    </head>
    <body>
        <img src="">
    </body>
    </html>

    balas
    0
  • Batalbalas