通过 Serverless 加速 Blazor WebAssembly

Blazor ❤ Serverless

我正在开发 Ant Design 的 Blazor 版本,预览页面部署在 Github Pages 上,但是加载速度很不理想,往往需要 1 分钟多钟才完成。

项目地址:https://github.com/ElderJames/ant-design-blazor[1] 求 Star。

当寻求解决方案时,了解到了 Serverless 可以轻松地部署静态网站到腾讯云的对象存储服务上,经过尝试之后,体验非常好!访问速度就变成了 3 秒钟,心想 Blazor 与 Serverless 结合后,是一定能成功的。

Blazor WebAssembly 简介

Blazor 是 .NET 实现的前端框架,它使一套代码可分别支持服务端 WebSocket 双向绑定或者是运行在 WebAssembly 上。Blazor WebAssembly 可以让开发者使用跟熟悉的 Razor 模版同样的开发模型,来开发基于 WebAssembly 的 SPA 应用。目前 Blazor WebAssembly 已经是在 WebAssembly 领域中发展得最完善的 Web 框架。

Serverless 简介

Serverless 是开发者和企业用户共同推动的,它可以使开发者在构建和运行应用时无需管理服务器等基础设施,将构建应用的成本进一步降低,函数是部署和运行的基本单位。

开发者无需关心底层资源即可部署完整可用的 Serverless 应用架构。

创建 Blazor WebAssembly 应用程序

前置准备

安装.NET Core SDK 3.1.2 以上版本 下载地址[2]

安装模版

Blazor WebAssembly 目前还在 preview 阶段,所以正式发布的.NET Core SDK 还没有内置模版,但是我们可以手动安装模版。

运行命令

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1

创建项目

运行命令

dotnet new blazorwasm -o BlazorServerless

可以看到在 BlazorServerless 已经创建好了 Web WebAssembly 应用。我们进入目录,执行命令:

cd BlazorServerless
dotnet run

访问 https://localhost:5001 就能浏览了。

可以看到,加载时要加载 2.1MB 的文件,首次加载时对网速的压力还是很大的。如果部署在境外,例如 Github Pages,可能就需要等上好几分钟了。

所幸,我们可以用 Serverless 把它部署到国内服务器上,解决了加载问题。

发布项目

现在,我们需要发布这个项目,生成需要部署的文件。

dotnet publish -o publish

这样,publish\BlazorServerless\dist 目录里的文件就是我们需要部署的文件了!

部署到腾讯云 Serverless 平台

前置准备

首先确保系统包含以下环境:

  • Node.js[3] (Node.js 版本需不低于 8.6,建议使用最新版本)

安装 serverless cli

npm install -g serverless

在 Windows 系统上,如果报错,错误提示是因为在此系统上禁止运行脚本...,那么请执行命令开启 .ps1 脚本

set-ExecutionPolicy RemoteSigned

添加配置文件

现在,需要在上面我们的发布目录 publish\BlazorServerless (跟 dist 目录同级)中,创建 serverless.yml 文件,内容如下:

# serverless.ymlblazor-wasm:component: "@serverless/tencent-website"inputs:code:src: ./dist # Upload static filesindex: index.htmlerror: index.htmlregion: ap-guangzhoubucketName: blazor-bucket

需要注意的是,如果我们部署的是依赖路由系统的 SPA 站点,error 项也要指向 index.html,这样在直接访问子路由时,还能回到 index 页面加载路由。否则会有 404 错误。

配置完成后,文件目录如下:

/BlazorServerless├── publish/BlazorServerless|    ├── dist|    |   ├── _framework|    |   ├── css|    |   ├── sample-data|    |   └── index.html|    └── serverless.yml└── README.md

三、部署并浏览

在上图所示,即 serverless.yml 文件所在目录下,通过 serverless 命令进行部署,添加 --debug 参数查看部署详情:

serverless --debug

如果这个目录是第一次授权,或者没有创建环境变量文件设置授权信息,则会出现一个二维码,不管有没有注册过腾讯云,都能通过微信扫码授权开通,非常方便。

以下是输入以上命令后的控制台的输出:

PS D:\code\net\blazor\BlazorServerless\publish\BlazorServerless> serverless --debugDEBUG ─ Resolving the template's static variables.DEBUG ─ Collecting components from the template.DEBUG ─ Downloading any NPM components found in the template.DEBUG ─ Analyzing the template's components dependencies.DEBUG ─ Creating the template's components graph.DEBUG ─ Syncing template state.DEBUG ─ Executing the template's components graph.(此处会出现二维码)Please scan QR code login from wechat.
Wait login...
Login successful for TencentCloud.DEBUG ─ Preparing website Tencent COS bucket blazor-bucket-1256169759.DEBUG ─ Bucket "blazor-bucket-1256169759" in the "ap-guangzhou" region already exist.DEBUG ─ Setting ACL for "blazor-bucket-1256169759" bucket in the "ap-guangzhou" region.DEBUG ─ Ensuring no CORS are set for "blazor-bucket-1256169759" bucket in the "ap-guangzhou" region.DEBUG ─ Ensuring no Tags are set for "blazor-bucket-1256169759" bucket in the "ap-guangzhou" region.DEBUG ─ Configuring bucket blazor-bucket-1256169759 for website hosting.DEBUG ─ Uploading website files from D:\code\net\blazor\BlazorServerless\publish\BlazorServerless\dist to bucket blazor-bucket-1256169759.DEBUG ─ Starting upload to bucket blazor-bucket-1256169759 in region ap-guangzhouDEBUG ─ Uploading directory D:\code\net\blazor\BlazorServerless\publish\BlazorServerless\dist to bucket blazor-bucket-1256169759DEBUG ─ Website deployed successfully to URL: http://blazor-bucket-1256169759.cos-website.ap-guangzhou.myqcloud.com.blazor-wasm:url: http://blazor-bucket-1256169759.cos-website.ap-guangzhou.myqcloud.comenv:116s » blazor-wasm » done

这样,最后出现绿色的 Done 字样,就说明部署成功了!访问给出的 url,就能看到部署在腾讯云对象存储服务中的站点了!

访问时加载速度非常快!

参考资料

[1]

ant-design-blazor: https://github.com/ElderJames/ant-design-blazor

[2]

下载地址: https://dotnet.microsoft.com/download/dotnet-core

[3]

Node.js: https://nodejs.org/dist/v12.16.1/node-v12.16.1-x64.msi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse中tomcat启动不了_Eclipse怎样与Tomcat集成

1 打开eclipse2 打开Window -> Show View -> Servers3 点击No servers are available.Click this link to create a new server...4 选择 Apache -> Tomcat v9.0 Server,tomcat的版本可以根据本机安装的tomcat版本选择,然后点击Next5 Name不需要…

树的存储结构-双亲表示法

特点:找双亲容易&#xff0c;找孩子难 代码如下&#xff1a; #include <iostream> using namespace std; typedef char ElemType; #define MAX_Tree_size 100 typedef struct PTNode {ElemType data;int parent;//双亲位置域 }PTNode;typedef struct {PTNode nodes[MA…

cg word List5

## cg word List5 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

x509trustmanager怎么验证证书_GeoTrust通配符证书和多域名SSL证书对比评测

GeoTrust SSL证书类型很丰富&#xff0c;能够满足多样的需求&#xff0c;而GeoTrust通配符证书和多域名SSL证书都是支持多个域名的SSL证书&#xff0c;这时候就有网友问了&#xff0c;GeoTrust通配符证书和多域名SSL证书选择哪个好呢&#xff1f;接下来安信证书就为大家做个详细…

树的存储结构-孩子链表

特点:找孩子容易&#xff0c;找双亲难 代码如下&#xff1a; #include <iostream> using namespace std; typedef char ElemType; #define MAX_tree_size //孩子结构 typedef struct CTNode {int child;struct CTNode *next; }*ChildPtr; //双亲结点结构 typedef stru…

【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结

使用 ASP.NET Core 3.x 构建 RESTful Web API 的视频教程已经完结&#xff0c;共50讲&#xff0c;约10.5小时。B站可看&#xff0c;点击原文链接。度娘盘可下载完整视频&#xff1a;https://pan.baidu.com/s/1VPE3bkAVQI_RO3tDrxod4w提取码: hsmj源码以及PPT&#xff1a;https:…

ASP.NET Core 借助 Helm 部署应用至 K8S

前言玩K8S也有一段时间了&#xff0c;借助云服务提供商的K8S控制台&#xff0c;已经可以很方便的快速部署应用至K8S。通过简单的点击&#xff0c;可以一次性帮忙创建K8S 对象&#xff1a;Deployment、Service、Ingress、ConfigMap等。但是当服务的规模上来后&#xff0c;这种方…

.Net Core中IOC容器的使用

本文由江北原创投稿&#xff0c;独家授权技术在于分享&#xff08;公众号ID&#xff1a;sharecore&#xff09;&#xff0c;未经许可&#xff0c;不得转载。作者&#xff1a;江北打代码之前先说一下几个概念,那就是什么是IOC、DI、DIP虽然网上讲这些的已经有很多了,我这里还是要…

qiankun 微前端_qiankun 微前端应用实践与部署(二)

下面是两种方案的简要描述。传统部署方式通过配置 nginx 端口到目录的转发。具体可查看上一篇文章特点需要对外开放子应用对应的端口&#xff0c;将编译好的应用文件放到对应的配置目录。docker 部署方式首先构建主应用与子应用的 docker 镜像&#xff0c;通过 docker run 或者…

在树莓派上使用 PowerShell 调用 Azure 上的 .NET Core API 获取疫情数据

点击上方蓝字关注“汪宇杰博客”导语最近因为疫情被关在家里&#xff0c;做了个无聊成就&#xff1a;我们将在树莓派上用 PowerShell 调用 Azure 上的一个 .NET Core 写的 API 来获取疫情数据。疫情数据API疫情数据来源于腾讯新闻的一个实时更新的页面&#xff0c;原始 API 地址…

gitlab 删除分支_初识gitlab工作流

git对我来说挺难理解的&#xff0c;平时遇到问题也是绕着走&#xff0c;倒也没啥大问题&#xff0c;但基于git软件的工作流却很重要&#xff0c;尤其对于一个组织来说。git工作流、github工作流、gitlab工作流都属于特性分支(feature branches)的类别&#xff0c;今天主要理解g…

.NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)

07 | 用Autofac增强容器能力&#xff1a;引入面向切面编程&#xff08;AOP&#xff09;的能力如何获取没有命名的服务呢&#xff1f;// 获取没有命名的服务&#xff0c;把 namd 去掉即可 var servicenamed this.AutofacContainer.Resolve<IMyService>(); servicenamed.S…

hdfs读写流程_一文读懂HDFS分布式存储框架分析

一文读懂HDFS分布式存储框架分析HDFS是一套基于区块链技术的个人的数据存储系统&#xff0c;利用无处不在的私人PC存储空间及便捷的网络为个人提供数据加密存储服务&#xff0c;将闲置的存储空间利用起来&#xff0c;服务于正处于爆发期的个人数据存储市场。HDFS属于什么结构体…

gRPC in ASP.NET Core 3.x - gRPC 简介(1)

gRPC的结构 在我们搭建gRPC通信系统之前&#xff0c;首先需要知道gRPC的结构组成。 首先&#xff0c;需要一个server&#xff08;服务器&#xff09;&#xff0c;它用来接收和处理请求&#xff0c;然后返回响应。 既然有server&#xff0c;那么肯定有client&#xff08;客户端&…

arcgis 获取json经纬度_干货|ArcGIS的矢量化操作——ArcGis中进行地形图的配准

1.1.1方法简介1.1.1.1所有图件扫描后都必须经过扫描纠正&#xff0c;对扫描后的栅格图进行检查&#xff0c;以确保矢量化工作顺利进行。对影像的配准有很多方法&#xff0c;下面介绍一种常用方法。(1)打开 ArcMap&#xff0c;增加 Georeferncing 工具条。(2)把需要进行纠正的影…