Javascript SPA如何处理未修改的响应
例如,用angular或vuejs编写的单页应用程序(SPA)在一个页面上加载3个组件,每个组件调用不同的后端api 然后,用户刷新页面。进行了相同的3个调用,但这次,后端为每个调用返回304 SPA组件只是js代码。因此,每次对后端的调用都会返回数据。当返回304时。没有数据。然而,事情运作良好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响应,而不返回任何内容。如果没有这些标题,服务器将始终以完整内容响应。
有些魔法我不懂。有人能帮我理解这一点吗?如果客户机包含一个
(如果自以来修改过)或(如果没有匹配的请求头),服务器将只返回一个304响应,而不返回任何内容。如果没有这些标题,服务器将始终以完整内容响应。现在有两种可能性:
- Javascript代码本身添加了这些头,因为它仍然在某处有数据,以显式地允许空响应。Javascript代码可能已将数据存储在本地存储器中
- 浏览器包含这些头,因为它仍然具有数据的隐式缓存,如果服务器返回304,它将透明地将缓存的数据返回给Javascript请求。我不确定浏览器是否真的做到了这一点;我相信不是,但这是可能的
Javascript更可能是在管理本地缓存,可能是通过web worker。您可能需要询问特定的前端框架,以及如何在该环境中最好地处理它,因为每个框架都有自己的模式。值得注意的是,API不应该发生这种情况,只有静态资产。是的,我认为XHR请求不需要隐式缓存。