Особенность функции 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 () и то, как мы можем вызвать новую функцию с дополнительным параметром .
//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 });