Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查ajax缓存?_Javascript_Ajax_Caching - Fatal编程技术网

Javascript 如何检查ajax缓存?

Javascript 如何检查ajax缓存?,javascript,ajax,caching,Javascript,Ajax,Caching,在我的代码中,我有一堆ajax请求,它们的cache选项设置为true 当我运行代码时,如何判断数据是从缓存检索的还是从服务器检索的(第一个请求,或者缓存已过期,或者缓存因某种原因被绕过) 理想情况下,我希望在JavaScript代码本身中执行此操作,因为我可能会并行运行多个调用。在chrome开发工具的“网络”选项卡中,您可以看到所有请求,如果从缓存中检索到,则在“大小”列中会显示(从缓存)。在chrome开发工具中,在“网络”选项卡中,您可以看到所有请求,在“大小”列中,如果从缓存中检索到请

在我的代码中,我有一堆ajax请求,它们的cache选项设置为true

当我运行代码时,如何判断数据是从缓存检索的还是从服务器检索的(第一个请求,或者缓存已过期,或者缓存因某种原因被绕过)


理想情况下,我希望在JavaScript代码本身中执行此操作,因为我可能会并行运行多个调用。

在chrome开发工具的“网络”选项卡中,您可以看到所有请求,如果从缓存中检索到,则在“大小”列中会显示(从缓存)。

在chrome开发工具中,在“网络”选项卡中,您可以看到所有请求,在“大小”列中,如果从缓存中检索到请求,则会显示(从缓存中)。

请查看以下内容:

请注意,cache:true仅适用于GET和HEAD请求。

请检查以下内容:


请注意,cache:true仅适用于GET和HEAD请求。

缓存由浏览器管理(不受您的直接控制),因此有点不可预测

如果参数完全相同,则应使用缓存

如果您想确保Ajax始终是“一个新调用”,请向Ajax请求添加一些参数,例如当前时间戳

....

    if (!args.url.indexOf("?")) args.url=args.url+"?xxxtmstmp="+new Date().getTime();
    else args.url=args.url+"&xxxtmstmp="+new Date().getTime();
...

缓存由浏览器管理(不受您的直接控制),因此有点不可预测

如果参数完全相同,则应使用缓存

如果您想确保Ajax始终是“一个新调用”,请向Ajax请求添加一些参数,例如当前时间戳

....

    if (!args.url.indexOf("?")) args.url=args.url+"?xxxtmstmp="+new Date().getTime();
    else args.url=args.url+"&xxxtmstmp="+new Date().getTime();
...

选中
304未修改
状态查看来自ajax的响应。如果响应值未更改,则给出304 not MODIFED(未修改)。您可以在本地存储响应值,并使用新响应进行检查

“未修改”

此代码表示请求正常完成,但服务器发送了HTTP 304“未修改”响应,表示请求的URL自上次请求以来未更改。只有将ifModified选项设置为true时,才会出现此状态代码。JQuery 1.4认为一个“NoM改”状态代码是成功的,但是早期版本认为它是一个错误。


选中
304未修改
状态查看来自ajax的响应。如果响应值未更改,则给出304 not MODIFED(未修改)。您可以在本地存储响应值,并使用新响应进行检查

“未修改”

此代码表示请求正常完成,但服务器发送了HTTP 304“未修改”响应,表示请求的URL自上次请求以来未更改。只有将ifModified选项设置为true时,才会出现此状态代码。JQuery 1.4认为一个“NoM改”状态代码是成功的,但是早期版本认为它是一个错误。


检查控制台,特别是“网络”选项卡,您将看到是否有其他请求通过。这看起来是一个很好的答案,谢谢!投票结束我自己的问题…检查控制台,特别是“网络”选项卡,您将看到是否有其他请求通过。@这看起来是一个很好的答案,谢谢!投票结束我自己的问题…我认为OP希望以编程方式完成这一点:“我希望在JavaScript代码本身中完成它”。@showdev是的,我想我的答案并不完美,但这是我能推荐的最好的东西:)+1我在这个答案之后编辑了我的问题,但这绝对有用。我认为OP希望通过编程实现这一点:“我希望在JavaScript代码本身中实现”。@showdev是的,我想我的答案并不完美,但这是我能推荐的最好的答案:)+1我在回答这个问题后编辑了我的问题,但这绝对有用。这是针对jQuery的,了解他们是如何获得“notmodified”状态(当然不是从状态代码中获得的)是很有趣的。答案可能在我自己的问题中引用的帖子中。这是针对jQuery的,了解他们如何获得“notmodified”状态(当然不是来自状态代码)会很有趣。答案可能在我自己的问题中引用的帖子中。