我需要在每个页面上显示我的应用程序的一些基本信息(使用_Layout.cshtml)
目前我展示的app版本如下:
<span>version @(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version)</span>但是,我还需要包括数据库版本和一些其他配置信息(在应用程序启动时从数据库获得)。
我的问题是,哪里是保存这些信息的最有效的地方,以便尽可能快地生成页面?我的直觉告诉我,System.Reflection每次获取版本都很慢(但这可能是完全错误的)。
在应用启动时将适当的信息保存到IConfiguration是否有意义?在每次页面加载时从IConfiguration访问数据是一种有效的方法吗?
我使用这里描述的IMemoryCache会更好吗?https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-5.0
在这里使用标签助手有意义吗?(https://www.learnrazorpages.com/razor-pages/tag-helpers/cache-tag-helper)
如果问题有点含糊,很抱歉--任何想法都很受欢迎(包括告诉我我什么都不担心!)
谢谢。
发布于 2021-07-26 16:09:51
一种选择是创建一个提供版本信息和register as a singleton的服务类。然后,您可以将此服务注入到您的布局中,以便根据需要获得要呈现的数据。
_Layout.cshtml:
@inject IMyVersionService versionService
@{
string version = versionService.GetVersion();
}
<!DOCTYPE html>
...
<span>@version</span>因为该服务是单例的,所以它将在第一次访问时被初始化一次,并且在之后的访问中将非常有效。您可以在构造函数中使用解析的版本信息设置一个私有字段。
https://stackoverflow.com/questions/68532962
复制相似问题