gpt4 book ai didi

javascript - Jquery getScript 缓存

转载 作者:行者123 更新时间:2023-12-03 21:33:35 26 4
gpt4 key购买 nike

默认情况下 $.getScript() 禁用缓存,您可以使用 $.ajaxSetup 并将缓存设置为 true。当测试脚本是否确实使用 Firebug 进行缓存时,大多数情况下脚本会以 200 返回(这意味着该脚本是一个新副本),并且大约有 20 或 30 次会返回 304(这意味着它使用了缓存)版本)。为什么大多数时候它都会获得新副本?

$.ajaxSetup({
cache: true
});

$.getScript( scriptFile );

getScript 检索的文件尚未编辑,并且请求只是页面更改。

最佳答案

首先让我们澄清一下 jQuery 禁用缓存的含义。

当 jQuery 禁用缓存时,意味着通过某种技巧强制浏览器再次加载文件,例如添加一个额外的随机数作为 url 末尾的参数。

当 jQuery 启用缓存时,不强制执行任何操作并让您在此文件的 header 上设置的缓存。这意味着如果您没有在文件头参数中设置将其保留在浏览器缓存中,浏览器将尝试通过某些方法再次加载它。

因此,通过 jQuery 启用缓存,您还必须在静态文件上设置正确的缓存 header 才能保留在浏览器缓存中,否则浏览器可能会尝试再次加载它们。

对于浏览器看到 header 上的创建日期的文件,然后连接到服务器再次询问 header ,进行比较,如果没有更改,则不会再次加载它,而是对服务器进行一次调用。

对于您设置了最大期限的文件,并且在此日期之前不询问服务器,那么浏览器如果找到它,将直接从缓存中加载它。

总结:
cache:true 让浏览器根据您发送的 header 决定该文件的缓存。
cache:false 强制再次加载文件。

一些与缓存相关的问题:
caching JavaScript files
IIS7 Cache-Control

内部代码
getScript() 正在调用 jQuery.get() 女巫是 shorthand Ajax function

$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});

因此,通过调用 getScript() 您可以进行 ajax 调用,并且 jQuery 不会保留任何类型的文件缓存(如果您一开始是这么想的)。

加载脚本的自定义函数
如果您不想创建全局cache:true,并且只需要使用cache:true加载一些文件,您可以创建一个自定义函数:

function getScriptCcd(url, callback)
{
jQuery.ajax({
type: "GET",
url: url,
success: callback,
dataType: "script",
cache: true
});
};

这不受全局缓存参数的影响,并且会加载脚本文件,而不会在末尾添加任何非缓存参数。

关于javascript - Jquery getScript 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com