Blazor WASM 7.0模板关闭宿主服务器后FetchData仍正常工作的原因是什么?
Blazor WebAssembly关闭服务器后FetchData仍可用的原因
首先明确核心逻辑:Blazor WebAssembly是纯客户端运行的Web应用——当浏览器完成应用的初始加载后,整个应用的代码、依赖库以及相关静态资源都会被下载并存储在浏览器本地。关闭Kestrel服务器只是切断了浏览器与服务器的后续连接,但已经加载完成的应用完全可以在浏览器中独立运行。
再看你调用的sample-data/weather.json:这是项目自带的静态文件,在服务器运行期间,浏览器已经完成了该文件的请求并将其缓存。当你关闭服务器后导航到FetchData页面,执行这段代码时:
protected async Task FetchDataAsync() { forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json"); }
浏览器并没有向已关闭的服务器发起新请求,而是直接从本地缓存中读取了之前下载好的JSON文件,因此数据能正常获取,代码可以正常运行。
只有当你刷新浏览器时,浏览器会重新尝试向服务器请求应用的入口资源(比如index.html),此时服务器已关闭无法响应,才会出现加载失败的情况。
内容的提问来源于stack exchange,提问作者Big Square
相关产品推荐
相关产品推荐

