aspnetcore 实现简单的伪静态化功能
Intro
在我的活动室预约项目中,有一个公告模块,类似于新闻发布,个人感觉像新闻这种网页基本就是发布的时候编辑一次之后就再也不会改了,最适合静态化了, 静态化之后用户请求的就是静态文件基本不再需要服务器端查询数据库甚至服务器端渲染,可以一定程度上提升服务器的处理能力以及优化用户体验,而且这种静态化的url对 SEO 比较友好。
由于我的这个项目正在开发中,迁移起来不太方便,所以使用的是伪静态化,看上去是访问的 *.html,实际上并不是 html,而是需要服务器处理的。
GetStarted
配置路由信息,注意顺序,伪静态的路由要在默认路由之前
app.UseMvc(routes => { routes.MapRoute("Notice", "/Notice/{path}.html", new { controller = "Home", action = "NoticeDetails" }); routes.MapRoute(name: "areaRoute", template: "{area:exists}/{controller=Home}/{action=Index}"); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}"); });
控制器代码:
/// <summary> /// 公告详情 /// </summary> /// <param name="path">访问路径</param> /// <returns></returns> public async Task<ActionResult> NoticeDetails(string path) { if (string.IsNullOrWhiteSpace(path)) { return RedirectToAction("Notice"); } try { var noticeBll = HttpContext.RequestServices.GetService<IBLLNotice>(); var notice = await noticeBll.FetchAsync(n => n.NoticeCustomPath == path.Trim()); if (notice != null) { notice.NoticeVisitCount += 1; await noticeBll.UpdateAsync(notice, x => x.NoticeVisitCount); return View(notice); } else { return RedirectToAction("Notice"); } } catch (Exception ex) { Logger.Error(ex); throw; } }
实际效果:
https://reservation.weihanli.xyz/Notice/test-notice.html
notice details
Q&A
Q:为什么我们要做(伪)静态化?
A:站点下的 *.html 文件有利于网站的 SEO 优化,有利于百度和google爬虫爬你的网站,SEO做的好有利于提高搜索排名【SEO的水也很深、感兴趣的可以自己找资料研究】。
Q:什么是伪静态化?什么是完全静态化?他们的区别是什么?
A:伪静态化是针对完全静态化来说的,(完全)静态化是会实际保存内容到一个 *.html 文件中,而伪静态化则是通过服务器端技术通过匹配 url 符合一定的模式就重新交给指定的程序处理并返回内容。
简单来说,(完全)静态化会有一个实际存在的静态文件,伪静态化则不存在,需要较多服务器端的处理。
Q:伪静态化和完全静态化哪个好?
A:这个问题更好的问法应该是这样的:“什么时候适合用伪静态化?什么时候适合用完全静态化?”,一个事物既然存在就必然有它存在的道理,存在即合理,如果没有存在的意义必将死去。
完全静态化一般会根据一个模板生成一个实际存在的 *.html 文件,完全静态化不需要太多的服务器端处理,客户端请求这个文件时因为是一个静态文件服务器会直接将文件内容返回给客户端,不需要额外的服务器处理。
完全静态化会减少服务器的压力。
伪静态化服务器上并没有静态 *.html文件,只是在服务器断使用了Rewrite,将动态URL进行重写,使动态URL表现为静态URL,以满足网页URL静态需求但网页依然为动态调用的,,是需要很多服务器端处理的,比如url的模式匹配,从数据库中查询数据。
总结:虽然完全静态化URL的网页有打开速度快的优点,但是网站内容巨大的话,势必会使网站的体积变大很多,会有很多的静态化文件,网站迁移的话很麻烦,另一方面如果网站内容很多的时候修改模板的话,再次静态化的时候会是一个比较大的工作量。实际使用的话还是需要根据自己实际需要来选取。
Reference
• https://github.com/WeihanLi/ActivityReservation/blob/dev/ActivityReservation
总结
以上所述是小编给大家介绍的aspnetcore 实现简单的伪静态化 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
上一篇:ASP.NET Core MVC基础学习之局部视图(Partial Views)
栏 目:ASP.NET
下一篇:.Net防sql注入的几种方法
本文地址:https://www.xiuzhanwang.com/a1/ASP_NET/10891.html
您可能感兴趣的文章
- 01-11如何给asp.net core写个简单的健康检查
- 01-11.NET Core 3.0 可回收程序集加载上下文的实现
- 01-11visual studio 2019正式版安装简单教程
- 01-11使用.NET Core实现饿了吗拆红包功能
- 01-11ASP.NET Core实现自定义WebApi模型验证详解
- 01-11ASP.NET Core 实现自定义WebApi模型验证实例讲解
- 01-11.Net之微信小程序获取用户UnionID的实现
- 01-11.Net Core WebApi的简单创建以及使用方法
- 01-11.NET Core 实现微信小程序支付功能(统一下单)
- 01-11ASP.NET MVC实现依赖注入的完整过程
阅读排行
本栏相关
- 01-11vscode extension插件开发详解
- 01-11VsCode插件开发之插件初步通信的方法
- 01-11如何给asp.net core写个简单的健康检查
- 01-11.net core高吞吐远程方法如何调用组件
- 01-11浅析.Net Core中Json配置的自动更新
- 01-11.NET开发人员关于ML.NET的入门学习
- 01-11.NET Core 迁移躺坑记续集之Win下莫名其
- 01-11.net core webapi jwt 更为清爽的认证详解
- 01-11docker部署Asp.net core应用的完整步骤
- 01-11ASP.NET Core静态文件的使用方法
随机阅读
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 01-10delphi制作wav文件的方法
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10SublimeText编译C开发环境设置