Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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_Http_Dom_Browser - Fatal编程技术网

Javascript 向前和向后浏览时,AJAX活动消失

Javascript 向前和向后浏览时,AJAX活动消失,javascript,ajax,http,dom,browser,Javascript,Ajax,Http,Dom,Browser,这不是一个元问题 我试图从技术上理解以下行为背后隐藏的原理。很容易复制: 投票支持/否决本页上的任何内容1 单击此页面上的任何其他链接 按后退按钮返回 您的upvote不再存在,页面上也不再出现任何AJAX活动 为什么呢?为什么浏览器会这样?StackOverflow如何防止这种情况 1如果您未连接,只需等待页面上其他人的活动(新评论、回答、投票),然后再移动页面。您不是“未通知”,您只是看不到您的投票,因为您的浏览器正在缓存ajax请求 如果您在Chrome上按F12,请单击设置图标,然后单

这不是一个元问题

我试图从技术上理解以下行为背后隐藏的原理。很容易复制:

  • 投票支持/否决本页上的任何内容1
  • 单击此页面上的任何其他链接
  • 按后退按钮返回
  • 您的upvote不再存在,页面上也不再出现任何AJAX活动

    为什么呢?为什么浏览器会这样?StackOverflow如何防止这种情况


    1如果您未连接,只需等待页面上其他人的活动(新评论、回答、投票),然后再移动页面。

    您不是“未通知”,您只是看不到您的投票,因为您的浏览器正在缓存ajax请求

    如果您在Chrome上按F12,请单击设置图标,然后单击“禁用缓存(当DevTools打开时)”,当您按back时,浏览器将重新发送请求

    为了避免这种情况,您必须在代码中指定您永远不希望缓存该特定请求。

    您可能需要查看以下帖子:

    -

    另外,在进行测试时,您必须保持控制台(F12)处于打开状态。

    您不是“未通知”,您只是没有看到您的投票,因为您的浏览器正在缓存ajax请求

    如果您在Chrome上按F12,请单击设置图标,然后单击“禁用缓存(当DevTools打开时)”,当您按back时,浏览器将重新发送请求

    为了避免这种情况,您必须在代码中指定您永远不希望缓存该特定请求。

    您可能需要查看以下帖子:

    -

    另外,在进行测试时,您必须保持控制台(F12)处于打开状态。

    您不是“未通知”,您只是没有看到您的投票,因为您的浏览器正在缓存ajax请求

    如果您在Chrome上按F12,请单击设置图标,然后单击“禁用缓存(当DevTools打开时)”,当您按back时,浏览器将重新发送请求

    为了避免这种情况,您必须在代码中指定您永远不希望缓存该特定请求。

    您可能需要查看以下帖子:

    -

    另外,在进行测试时,您必须保持控制台(F12)处于打开状态。

    您不是“未通知”,您只是没有看到您的投票,因为您的浏览器正在缓存ajax请求

    如果您在Chrome上按F12,请单击设置图标,然后单击“禁用缓存(当DevTools打开时)”,当您按back时,浏览器将重新发送请求

    为了避免这种情况,您必须在代码中指定您永远不希望缓存该特定请求。

    您可能需要查看以下帖子:

    -


    另外,在进行测试时,您必须保持控制台(F12)处于打开状态。

    浏览器缓存在这里发挥作用

    因为有人问你如何才能“防止”这种情况,所以可以建议浏览器检查文档是否每次都发生了更改。但出于性能原因,不这样做。因此,HTML文档在一段时间内被视为“仍然有效”,在此期间,浏览器直接从缓存中取出它,而不必往返到服务器

    如果您查看浏览器的开发人员工具中的HTTP响应头,查看浏览器为此页面发出的请求,您将看到如下内容:

    Cache-Control:  public, no-cache="Set-Cookie", max-age=60
    
    –因此,此HTML文档的有效期为60秒。如果在60秒内离开它并在浏览器中返回,或关闭选项卡并从历史记录中重新打开它,则浏览器应获取缓存版本并显示它,而无需再次与服务器检查是否有更改。而且,由于您的投票没有操纵这个原始HTML文档(只有DOM更新了您的投票),因此您仍然会显示以前的投票计数

    但如果您在浏览器中按
    [F5]
    ,缓存将被绕过–它将再次从SO请求文档,然后您将看到您的投票,因为这一次更新的数字是为您服务的更新HTML文档的一部分

    如果您想深入研究HTTP缓存,谷歌顶部的一些资源似乎值得一看:


    浏览器的缓存在这里起作用

    因为有人问你如何才能“防止”这种情况,所以可以建议浏览器检查文档是否每次都发生了更改。但出于性能原因,不这样做。因此,HTML文档在一段时间内被视为“仍然有效”,在此期间,浏览器直接从缓存中取出它,而不必往返到服务器

    如果您查看浏览器的开发人员工具中的HTTP响应头,查看浏览器为此页面发出的请求,您将看到如下内容:

    Cache-Control:  public, no-cache="Set-Cookie", max-age=60
    
    –因此,此HTML文档的有效期为60秒。如果在60秒内离开它并在浏览器中返回,或关闭选项卡并从历史记录中重新打开它,则浏览器应获取缓存版本并显示它,而无需再次与服务器检查是否有更改。而且,由于您的投票没有操纵这个原始HTML文档(只有DOM更新了您的投票),因此您仍然会显示以前的投票计数

    但如果您在浏览器中按
    [F5]
    ,缓存将被绕过–它将再次从SO请求文档,然后您将看到您的投票,因为这一次更新的数字是为您服务的更新HTML文档的一部分

    如果您想深入研究HTTP缓存,谷歌顶部的一些资源似乎值得一看:


    浏览器的缓存在这里起作用

    既然有人问你怎么会这样