Caching Conundrum: Safari's Selective Fetching dalam iOS 6
Sejak iOS 6 dikeluarkan, pembangun telah menghadapi gelagat yang tidak dijangka dalam paparan web Safari: $ Panggilan .ajax POST sedang dicache secara keras walaupun tetapan cache:false. Menariknya, anomali ini hanya nyata apabila fungsi yang dipanggil menggunakan tandatangan statik.
Penyiasatan awal mendedahkan bahawa Safari menyorokkan respons POST hanya jika ia tidak mempunyai pengepala Cache-Control atau Expires atau jika Cache-Control ditetapkan kepada umur maksimum =0. Walau bagaimanapun, memberikan permintaan "Cache-Control: no-cache" memintas gelagat ini, menghalang cache sama sekali.
Keputusan Apple untuk memanfaatkan peruntukan spesifikasi HTTP ini untuk kaedah POST (bahagian 9.5) telah menyebabkan pembangun bingung. Walaupun caching POST respons tidak pernah didengari, pilihan Safari untuk berbuat demikian tanpa sebarang pengepala atau dengan max-age=0 nampaknya merupakan penyelewengan daripada gelagat penyemak imbas konvensional.
Untuk menyelesaikan masalah caching ini, penyelesaian global dalam konfigurasi Apache adalah seperti berikut:
Header set Cache-Control "no-cache"
Walau bagaimanapun, jika secara selektif menggunakan arahan "tiada-cache" kepada permintaan POST sahaja diutamakan, Apache menawarkan penyelesaian:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Sebagai alternatif , menambahkan parameter unik pada URL atau data POST boleh memintas isu caching untuk tandatangan fungsi statik.
Atas ialah kandungan terperinci Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun \'cache:false\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!