cari

Rumah  >  Soal Jawab  >  teks badan

Halang Safari daripada menyimpan cache halaman apabila mengklik butang kembali

Safari menghadapi masalah memuatkan video You Tube lama apabila mengklik butang belakang. Saya cuba menambah onunload="" (disebut di sini Mencegah cache pada butang belakang dalam Safari 5) pada teg badan tetapi ia tidak berfungsi dalam kes ini.

Adakah terdapat cara untuk menghalang safari daripada dimuatkan daripada cache pada halaman tertentu?

P粉295728625P粉295728625313 hari yang lalu411

membalas semua(2)saya akan balas

  • P粉514001887

    P粉5140018872024-01-22 13:43:52

    Semua jawapan ini agak hacky. Dalam pelayar moden (Safari), hanya berfungsi pada penyelesaian onpageshow,

    window.onpageshow = function (event) {
        if (event.persisted) {
            window.location.reload();
        }
    };

    Tetapi pada peranti perlahan, kadangkala anda akan melihat paparan cache dari sekejap sebelum memuatkan semula. Cara yang betul untuk mengendalikan ini adalah dengan menetapkan Kawalan Cache dengan betul pada respons pelayan seperti yang ditunjukkan di bawah

    '缓存控制','无缓存,max-age=0,必须重新验证,无存储'

    balas
    0
  • P粉495955986

    P粉4959559862024-01-22 09:58:12

    Masalah anda disebabkan oleh cache belakang. Ia harus menyimpan keadaan lengkap halaman apabila pengguna menavigasi pergi. Apabila pengguna menavigasi kembali menggunakan butang belakang, halaman boleh dimuatkan dari cache dengan cepat. Ini berbeza daripada caching biasa yang hanya menyimpan kod HTML.

    Apabila bfcache memuatkan halaman, atribut onload事件不会被触发。相反,您可以检查 onpageshow 事件的 persisted. Ia ditetapkan kepada palsu pada pemuatan halaman awal. Ia ditetapkan kepada benar apabila halaman dimuatkan daripada bfcache.

    Penyelesaian Kludgish adalah dengan memaksa muat semula apabila memuatkan halaman daripada bfcache.

    window.onpageshow = function(event) {
        if (event.persisted) {
            window.location.reload() 
        }
    };

    Jika anda menggunakan jQuery, lakukan perkara berikut:

    $(window).bind("pageshow", function(event) {
        if (event.originalEvent.persisted) {
            window.location.reload() 
        }
    });

    balas
    0
  • Batalbalas