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

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 实现简单的伪静态化相关推荐

  1. html静态网页模板_aspnetcore 实现简单的伪静态化

    aspnetcore 实现简单的伪静态化 Intro 在我的活动室预约项目中,有一个公告模块,类似于新闻发布,个人感觉像新闻这种网页基本就是发布的时候编辑一次之后就再也不会改了,最适合静态化了, 静态 ...

  2. 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化

    [建站系列教程]6..htaccess文件的url重写规则-网页伪静态化 如何创建.htaccess文件? .htaccess是什么 htaccess语法教程 写在前面:大家好,我是热爱编程的小泽. ...

  3. jsp静态化和伪静态化转载

    2019独角兽企业重金招聘Python工程师标准>>> 首先说说为什么要静态化. 对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了 ...

  4. 网页静态化和网页伪静态化之间的区别与选择

    网页静态化和网页伪静态化,如果我们是一个不懂网站的人估计听到这些词可能会比较头晕,王晟璟在刚开始接触并尝试建设自己的个人博客网站的时候也是如此,看了很多关于这方面的资料也还是云里雾里的,不过后面终于整 ...

  5. jsp使用URLRewrite实现url地址伪静态化

    1.1URLRewirte的用处 1.满足搜索引擎的要求. 2.隐藏技术实现,提高网站的移植性. 3.满足美感的要求(个人感觉这个用处太牵强). 1.2项目部署 1.首先在http://tuckey. ...

  6. url rewrite 实现url地址的伪静态化

    (1) 在Java web服务器内使用url rewrite(实现url地址的伪静态化) 每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号. ...

  7. 实现Asp伪静态化实例讲解

    asp路径伪静态化.本站内容页已经采用,请看下述详细分解. Asp页面如果你想使它看上去静态化,又不是完全真正静态化,目的就是使它对搜索引擎更友好点.讨好一下,作为辛苦的站长们也不为过嘛.就可以使用本 ...

  8. PHP 页面静态化/纯静态化/伪静态化

    转载:https://www.cnblogs.com/caoruiy/p/4698938.html 概念 PHP静态化分为:纯静态化 和 伪静态化:纯静态化又分为:局部静态化 和 完全静态化 纯静态化 ...

  9. php路径伪静态化,URL地址伪静态化

    主要需要的的jar包 用的原因 把.jsp,.php页面地址进行伪静态化.让他访问的路径为.html urlrewrite.jar pom依赖配置 org.tuckey urlrewrite 2.5. ...

最新文章

  1. 猿题库 iOS 客户端架构设计-唐巧
  2. 前端学习(3083):vue+element今日头条管理-表单数据绑定
  3. 前端学习(1937)vue之电商管理系统电商系统之渲染分配角色的对话框并请求数据
  4. 谷歌浏览器安卓版_谷歌Chrome Canary 82安卓版现可复制图片到剪贴板
  5. python怎么安装requests模块_python安装requests第三方模块
  6. 子慕谈设计模式系列(二)——设计模式六大原则
  7. 牛客网NOIP赛前集训营 第6场 T1 最长路
  8. Shell 的基础知识
  9. python simple example
  10. 怎么调安卓软件的dpi_无线鼠标怎么选、性价比高的罗技鼠标(M系列)推荐
  11. 在WebClient类中保持Session
  12. Echarts 模拟飞机飞行动态图
  13. 索尼中兴,平井封神?(转)
  14. 腾讯云uniapp云直播和即时通信插件接入流程
  15. 回归预测 | MATLAB实现Robust-ELM鲁棒极限学习机多输入单输出
  16. Java求100内 奇数 和 偶数 的和
  17. 关于高德地图的分析报告
  18. 小米一面经验分享,面试编程题
  19. 谏太宗十思疏 魏征(原文/译文)
  20. 1837:Balance

热门文章

  1. 延时消息_Handler的消息延时是怎么实现的
  2. Unity3D学习笔记之五为Prefab添加材质
  3. h5输出文字write_免费下载:Write是用于手写的文字处理器
  4. swift学习笔记-----swift中的指针
  5. 【Linux学习009】脚本编程之变量、条件测试和条件判断
  6. MetroGridHelper: A helpful debugging assistant for designers and developers alike
  7. 【贯穿】.NET6结合Docker傻瓜式实现容器编排
  8. iNeuOS工业互联网操作系统,顺利从NetCore3.1升级到Net6的过程汇报,发布3.7版本...
  9. ABP vNext微服务架构详细教程——项目部署
  10. CALL FOR DUTY 来和我们一起冒险吧!