Статьи

Рефакторинг jQuery .getScript () для предотвращения кеширования

Особенность функции jQuery .getScript () заключается в том, что она включает уникальный идентификатор (отметка времени или тому подобное) для каждого вызова сценария ajax . Это создало проблему для меня, когда я запускал setTimeout для получения сценария, но он перезагружал тот же сценарий … не очень хорошо. Поэтому я решил немного реорганизовать метод .getScrip () в jQuery, чтобы предотвратить кеширование, поэтому он загружает скрипт только один раз .

Новая функция getScript

//getScript refactor to prevent caching
(function () {
    $.getScript = function(url, callback, cache)
    {
        $.ajax({
                type: "GET",
                url: url,
                success: callback,
                dataType: "script",
                cache: cache
        });
    };
})();

Чтобы доказать, что это работает , я протестировал время загрузки HTTP-запросов и посмотрел на круги, которые вы видите, что скрипт теперь загружает кэшированную версию примерно за 7мс.
getScript caching

Давайте подробно рассмотрим оригинальную функцию .getScript () и то, как мы можем вызвать новую функцию с дополнительным параметром .

 //normal no cached version
$.getScript('js/script.js', function()
{
    //do something after script loaded
});

Как вызвать новую функцию .getScript ()

Просто включите true в конце, если вы хотите, чтобы он был кэширован.

 //cache = true
$.getScript('js/script.js', function()
{
    //do something after script loaded
}, true);

ИЛИ

 // turn on cache
$.ajaxSetup({ cache: true });
$.getScript(url, callback);
// turn cache back off
$.ajaxSetup({ cache: false });