Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 SPA如何处理未修改的响应_Javascript_Angularjs_Vue.js_Http_Single Page Application - Fatal编程技术网

Javascript SPA如何处理未修改的响应

Javascript SPA如何处理未修改的响应,javascript,angularjs,vue.js,http,single-page-application,Javascript,Angularjs,Vue.js,Http,Single Page Application,例如,用angular或vuejs编写的单页应用程序(SPA)在一个页面上加载3个组件,每个组件调用不同的后端api 然后,用户刷新页面。进行了相同的3个调用,但这次,后端为每个调用返回304 SPA组件只是js代码。因此,每次对后端的调用都会返回数据。当返回304时。没有数据。然而,事情运作良好 有些魔法我不懂。有人能帮我理解这一点吗?如果客户机包含一个(如果自以来修改过)或(如果没有匹配的请求头),服务器将只返回一个304响应,而不返回任何内容。如果没有这些标题,服务器将始终以完整内容响应。

例如,用angular或vuejs编写的单页应用程序(SPA)在一个页面上加载3个组件,每个组件调用不同的后端api

然后,用户刷新页面。进行了相同的3个调用,但这次,后端为每个调用返回304

SPA组件只是js代码。因此,每次对后端的调用都会返回数据。当返回304时。没有数据。然而,事情运作良好


有些魔法我不懂。有人能帮我理解这一点吗?

如果客户机包含一个
(如果自
以来修改过)或
(如果没有匹配的
请求头),服务器将只返回一个304响应,而不返回任何内容。如果没有这些标题,服务器将始终以完整内容响应。现在有两种可能性:

  • Javascript代码本身添加了这些头,因为它仍然在某处有数据,以显式地允许空响应。Javascript代码可能已将数据存储在本地存储器中
  • 浏览器包含这些头,因为它仍然具有数据的隐式缓存,如果服务器返回304,它将透明地将缓存的数据返回给Javascript请求。我不确定浏览器是否真的做到了这一点;我相信不是,但这是可能的

Javascript更可能是在管理本地缓存,可能是通过web worker。

您可能需要询问特定的前端框架,以及如何在该环境中最好地处理它,因为每个框架都有自己的模式。值得注意的是,API不应该发生这种情况,只有静态资产。是的,我认为XHR请求不需要隐式缓存。