跳到主要内容
版本:3.0

静态页面插件

定义

命名空间:TouchSocket.Http
程序集:TouchSocket.Http.dll

一、说明

静态页面功能是指Web服务器通过HTTP(超文本传输协议)或HTTPS(安全的超文本传输协议)向客户端(通常是浏览器)提供预定义的内容。这些内容通常包括HTML文件、CSS样式表、JavaScript脚本以及图片等多媒体资源。与动态页面不同,静态页面在服务器端不会进行任何处理或计算;它们是以文件形式存储在服务器上的,并且当用户请求时,服务器直接将这些文件发送给客户端。

二、静态页面的特点

  1. 加载速度快:由于服务器不需要执行任何脚本来生成页面内容,因此响应速度通常更快。
  2. 易于维护:对于内容不经常变化的网站,使用静态页面可以减少维护成本,因为无需担心后端逻辑的更新和数据库管理等问题。
  3. 成本效益:对于访问量较小的站点,使用静态页面可以节省服务器资源和带宽,降低运营成本。

三、静态页面的使用场景

  • 个人博客:如果博主主要发布文字内容,且更新频率不高,那么采用静态页面构建个人博客是一个不错的选择。
  • 企业介绍:对于那些只需要展示公司信息、联系方式等基本内容的企业网站来说,静态页面能够满足需求同时保持简洁高效。
  • 项目展示:艺术家、设计师等可以通过静态页面来创建个人作品集,以直观地向潜在客户展示自己的能力和风格。

总之,静态页面因其简单、快速和安全的特性,在特定的应用场景下具有明显优势。然而,对于需要频繁更新内容或实现复杂交互功能的网站,则可能更适合选择动态页面技术。

四、使用

4.1 常规使用

在创建HttpService实例后,只需要使用UseHttpStaticPage插件,然后指定根文件夹路径即可。

var service = new HttpService();

var config = new TouchSocketConfig();
config.SetListenIPHosts(new IPHost[] { new IPHost(7789) })
.ConfigurePlugins(a =>
{
a.UseHttpStaticPage()//添加静态页面文件夹
.AddFolder("../../../../../api");

});

await service.SetupAsync(config);

await service.StartAsync();

Console.WriteLine("Http服务器已启动");
提示

UseHttpStaticPage插件可以多次添加,也可以添加多个文件夹。

4.2 请求资源定向

在使用UseHttpStaticPage插件时,可以指定请求资源定向。例如,当请求的URL/api时,将重定向到/api/index.html

a.UseHttpStaticPage()
.SetNavigateAction(request =>
{
if (request.RelativeURL.EndsWith("/"))
{
return $"{request.RelativeURL}/index.html";
}
//此处可以设置重定向
return request.RelativeURL;
})
.AddFolder("api/");
信息

默认情况下,会将//index都定向到/index.html

4.3 响应配置

可以通过配置响应头,例如添加自定义头。

a.UseHttpStaticPage()
.SetResponseAction(response =>
{
//可以设置响应头
})
.AddFolder("api/");

4.4 配置ContentType

默认情况下,会将常见的文件后缀名映射到对应的ContentType。例如,.html文件会被映射为text/html。详情请见ContentTypeMapper

但是,也可以通过配置ContentTypeMapper来覆盖默认的映射关系。

a.UseHttpStaticPage()
.SetContentTypeProvider(mapper =>
{
mapper.Add(".txt", "text/plain");
})
.AddFolder("api/");
信息

在一些浏览器中,可能会出现编码错误的问题,可以通过设置ContentTypeMapper来修正。例如,将.txt文件映射为text/plain; charset=UTF-8,这样就不会出现乱码了。