1.简单介绍
.NET 9 Blazor 新增加的一个feature是在Interactive模式的Blazor站点中可以设定某个页面为Static SSR模式。
这边也简单尝试一下这个新的特性
2.具体说明
2.1 创建项目
- 创建一个Blazor Web Assembly的项目,

2)编辑App.razor
<head>
...
<HeadOutlet @rendermode="@PageRenderMode" />
</head>
<body>
<Routes @rendermode="@PageRenderMode" />
...
</body>
@code {
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
private IComponentRenderMode? PageRenderMode
=> HttpContext.AcceptsInteractiveRouting() ? InteractiveWebAssembly : null;
}
3)把Weather.razor页面变成Static SSR,

@page "/weather"
@attribute [ExcludeFromInteractiveRouting]
2.2 运行一下
发现Weather.razor页面能正常工作,同时页面是服务器端渲染之后传到浏览器的



这时如果是从Counter页面跳转到Weather页面,发现服务端会重新渲染并下载的Weather页面

如果Weather.razor页面没有设定 @attribute [ExcludeFromInteractiveRouting]
则Weather页面也是InterActiveWebAssemblyRenderMode的,和别的页面一样的render mode。测试了一下,发现这种情况下从Counter页面跳转到Weather页面是没有从服务器端重新下载Weather页面的。

3.总结
本文简单尝试了一下在全局设定为Interactive(可以为InteractiveServer,InteractiveWebAssembly,
InteractiveAuto)情况下,如何将其中一个页面变成Static SSR,同时看看和未变成Static SSR时候有什么不同的。
如果哪里有错误,麻烦告之,谢谢谢谢!