Visual Studio 中的 Blazor 应用使用 Http.GetFromJsonAsync 调用从 wwwroot 中的 json 文件获取天气预报数据。
当我更改文件中的数据时,我仍然在表中看到相同的数据?
当我复制文件并更改代码以使用新文件名时,我得到了更改后的结果。
是否对 wwwroot 文件进行了一些缓存?我试过努力刷新,这没有什么不同,但改变浏览器确实如此。我知道 Blazor 会缓存框架文件...但是所有 wwwroot 都会发生这种情况,我该如何更改这种行为?
提前致谢。
最佳答案
fetchdata 示例页面(来自新的 blazorwasm)在初始化组件上检索数据:
protected override async Task OnInitializedAsync()
{
forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json");
}
当您离开此页面并返回时,初始化再次运行并完成请求。
但是,因为这是一个GET
请求,浏览器可以从缓存中传递答案:
它们是避免对 Blazor GET 请求进行缓存的一些方法,请在此处了解:Bypass HTTP browser cache when using HttpClient in Blazor WebAssembly
此外,您还可以使用简单的技巧将随机字符串添加到查询字符串中:
protected override async Task OnInitializedAsync()
{
var randomid = Guid.NewGuid().ToString();
var url_get = $"sample-data/weather.json?{randomid}";
forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>(url_get);
}
简而言之,它似乎被缓存了,因为一个get请求可以被浏览器缓存,并且是浏览器检索数据。
关于json - 为什么 FetchData 中的天气样本似乎已缓存到示例 Blazor 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66039596/