blazor prerender cache
1.0.0
缓存,可与Ellazor WebAssembly和服务器预处理一起使用。防止/简化双初始化UI闪光灯。
这是一种尝试解决/减轻问题的尝试,在页面上的Ellazor WebAssembly +服务器预处理可能会导致“ UI Flash”。
第二次获取数据所需的时间是导致UI闪烁的原因。

该代码添加了一个缓存,该缓存处理很像ImeMoryCache(这是首先解决此问题的建议方法之一)。
但是,与其将缓存存储在服务器上(例如,删除数据库的第二次旅行),而是存储在静态PRERENDERED页面中。
然后,当页面获得第二个初始化时,将从静态页面加载缓存,并从那里提取数据。这样可以完全防止到服务器的行程,从而删除异步步骤并大大减少/删除第二个加载阶段。
该库可作为Nuget软件包可供说服,但是它很小,以至于最好将2个文件复制到您的项目中。
Install-Package Flyingpie.Blazor.PrerenderCache
builder . Services
. AddScoped < IPrerenderCache , PrerenderCache > ( )
;< component type = " typeof(Flyingpie.Blazor.PrerenderCache.PrerenderCacheStore) " render-mode = " Static " />请注意,必须将此组件添加到页面底部,因此在所有其他组件之后将其加载。
这是为了防止iPrerenderCache获得所有待办事项数据之前的组件渲染。
[ Inject ]
public IPrerenderCache Cache { get ; set ; }
protected override async Task OnInitializedAsync ( )
{
// Original
// VM = await StashApiClient.GetPostsAsync();
// Cacheable
VM = await Cache . GetOrAdd ( nameof ( Articles ) , ( ) => StashApiClient . GetPostsAsync ( ) ) ;
}GetorAdd-Method的第一个参数是缓存键,该键必须在页面中是唯一的。
您可以通过查看页面源来查看缓存的结果:
< script type =" text/javascript " >
window . prerenderCache = {
cache : { "Articles" : { "Limit" : 25 , "Offset" : 0 , "Count" : 4 , "Posts" : [ { "Id" : "37af5802-7ea4-4def-b090-5bd4ebf4dabc" , ... } ] } } ,
load : ( ) => window . prerenderCache . cache
} ;
</ script >