Ciri fungsi JQuery .GetScript () ialah ia termasuk ID unik (timestamp atau sebagainya) untuk setiap panggilan skrip Ajax
. Ini menimbulkan masalah untuk saya ketika saya menjalankan setTimeout untuk mendapatkan skrip tetapi ia memuat semula skrip yang sama ... tidak baik. Jadi saya memutuskan untuk refactor JQuery's .getScrip () sedikit untuk mengelakkan caching dan jadi ia hanya memuat skrip sekali.
fungsi GetScript baru
Untuk membuktikan ia berfungsi, saya menguji dalam permintaan HTTP masa beban dan melihat bulatan yang anda dapat lihat skrip kini memuat versi cache di sekitar 7ms.
<span>//getScript refactor to prevent caching
</span><span>(function () {
</span> $<span>.getScript = function(url<span>, callback, cache</span>)
</span> <span>{
</span> $<span>.ajax({
</span> <span>type: "GET",
</span> <span>url: url,
</span> <span>success: callback,
</span> <span>dataType: "script",
</span> <span>cache: cache
</span> <span>});
</span> <span>};
</span><span>})();</span>
Salin selepas log masuk
Mari kita lihat pada fungsi asal .getScript () asal dan bagaimana kita boleh memanggil fungsi baru dengan parameter tambahan.
<span>//normal no cached version
</span>$<span>.getScript('js/script.js', function()
</span><span>{
</span> <span>//do something after script loaded
</span><span>});</span>
Salin selepas log masuk
bagaimana memanggil fungsi baru .getScript ()
Hanya sertakan benar pada akhirnya jika anda mahu ia di -cache.
Atau
<span>//cache = true
</span>$<span>.getScript('js/script.js', function()
</span><span>{
</span> <span>//do something after script loaded
</span><span>}, true);</span>
Salin selepas log masuk
<span>// turn on cache
</span>$<span>.ajaxSetup({ cache: true });
</span>$<span>.getScript(url, callback);
</span><span>// turn cache back off
</span>$<span>.ajaxSetup({ cache: false });</span>
Salin selepas log masuk
Soalan Lazim (Soalan Lazim) Mengenai JQuery Getscript Refactor dan Mencegah Caching
Apakah JQuery GetScript dan bagaimana ia berfungsi? Ia adalah kaedah tersendiri untuk $ .ajax (). Kaedah GetScript mengambil skrip dari pelayan dan melaksanakannya. Ini cara yang mudah untuk memuat skrip atas permintaan, yang dapat membantu meningkatkan prestasi laman web anda. Walau bagaimanapun, ada kalanya anda mungkin mahu menghalang caching, seperti semasa pembangunan apabila anda membuat perubahan kerap pada skrip anda. Untuk mengelakkan caching dengan JQuery GetScript, anda boleh menggunakan kaedah $ .ajaxSetup () untuk menetapkan cache kepada palsu sebelum memanggil getScript. Ia juga boleh membantu anda mengenal pasti dan menghapuskan sebarang kelebihan atau ketidakcekapan dalam kod anda. Refactoring juga boleh menjadikan kod anda lebih modular, menjadikannya lebih mudah untuk menguji dan mengekalkan. Ini boleh menjadikan kod lebih mudah difahami dan dikekalkan. Anda juga boleh menggunakan Objek $. Kaedah Ajax lain, seperti $ .ajax (), $ .get (), dan $ .post (), boleh digunakan untuk menghantar dan mengambil data dari pelayan, tetapi mereka tidak secara automatik melaksanakan skrip yang dikembalikan seperti GetScript.
Bolehkah saya menggunakan JQuery GetScript dengan perpustakaan JavaScript yang lain? Walau bagaimanapun, anda perlu memastikan bahawa tiada konflik antara jQuery dan perpustakaan lain. Anda boleh menggunakan kaedah JQuery.Noconflict () untuk mengelakkan konflik. Kaedah ini dipanggil apabila permintaan gagal. Anda boleh menggunakannya untuk memaparkan mesej ralat atau melakukan tindakan lain apabila skrip gagal memuatkan. Walau bagaimanapun, disebabkan oleh dasar asal yang sama, skrip mesti direka untuk menyokong permintaan silang domain. Anda juga boleh menggunakan parameter cache untuk mengawal sama ada skrip di -cache. Walau bagaimanapun, kerana GetScript tidak segerak, skrip tidak boleh dimuat mengikut susunan yang anda harapkan. Untuk memastikan beban skrip dalam urutan yang betul, anda boleh menggunakan kaedah .done () untuk mengikat panggilan GetScript anda.
Atas ialah kandungan terperinci jQuery .getScript () refactor untuk mengelakkan caching. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!