SPAs如何处理未修改的304响应



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

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

SPA组件只是js代码。因此,每次调用后端时,他们都希望返回数据。当返回304时。没有数据。然而,一切都很好。。。

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

如果客户端包含If-Modified-SinceIf-None-Match请求标头,则服务器将只返回不包含任何内容的304响应。如果没有这些头,服务器将始终以完整的内容进行响应。现在有两种可能性:

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

更有可能是Javascript在管理本地缓存,也许是通过web工作人员。

最新更新