日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

aspnetcore 实现简单的伪静态化

發(fā)布時(shí)間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aspnetcore 实现简单的伪静态化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

aspnetcore 實(shí)現(xiàn)簡(jiǎn)單的偽靜態(tài)化

Intro

在我的活動(dòng)室預(yù)約項(xiàng)目中,有一個(gè)公告模塊,類似于新聞發(fā)布,個(gè)人感覺像新聞這種網(wǎng)頁基本就是發(fā)布的時(shí)候編輯一次之后就再也不會(huì)改了,最適合靜態(tài)化了, 靜態(tài)化之后用戶請(qǐng)求的就是靜態(tài)文件基本不再需要服務(wù)器端查詢數(shù)據(jù)庫甚至服務(wù)器端渲染,可以一定程度上提升服務(wù)器的處理能力以及優(yōu)化用戶體驗(yàn),而且這種靜態(tài)化的url對(duì) SEO 比較友好。

由于我的這個(gè)項(xiàng)目正在開發(fā)中,遷移起來不太方便,所以使用的是偽靜態(tài)化,看上去是訪問的 *.html,實(shí)際上并不是 html,而是需要服務(wù)器處理的。

GetStarted

配置路由信息,注意順序,偽靜態(tài)的路由要在默認(rèn)路由之前

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; } }

實(shí)際效果:

https://reservation.weihanli.xyz/Notice/test-notice.html

Q&A

Q:為什么我們要做(偽)靜態(tài)化?

A:站點(diǎn)下的 *.html 文件有利于網(wǎng)站的 SEO 優(yōu)化,有利于百度和google爬蟲爬你的網(wǎng)站,SEO做的好有利于提高搜索排名【SEO的水也很深、感興趣的可以自己找資料研究】。

Q:什么是偽靜態(tài)化?什么是完全靜態(tài)化?他們的區(qū)別是什么?

A:偽靜態(tài)化是針對(duì)完全靜態(tài)化來說的,(完全)靜態(tài)化是會(huì)實(shí)際保存內(nèi)容到一個(gè) *.html 文件中,而偽靜態(tài)化則是通過服務(wù)器端技術(shù)通過匹配 url 符合一定的模式就重新交給指定的程序處理并返回內(nèi)容。

簡(jiǎn)單來說,(完全)靜態(tài)化會(huì)有一個(gè)實(shí)際存在的靜態(tài)文件,偽靜態(tài)化則不存在,需要較多服務(wù)器端的處理。

Q:偽靜態(tài)化和完全靜態(tài)化哪個(gè)好?

A:這個(gè)問題更好的問法應(yīng)該是這樣的:“什么時(shí)候適合用偽靜態(tài)化?什么時(shí)候適合用完全靜態(tài)化?”,一個(gè)事物既然存在就必然有它存在的道理,存在即合理,如果沒有存在的意義必將死去。

完全靜態(tài)化一般會(huì)根據(jù)一個(gè)模板生成一個(gè)實(shí)際存在的 *.html 文件,完全靜態(tài)化不需要太多的服務(wù)器端處理,客戶端請(qǐng)求這個(gè)文件時(shí)因?yàn)槭且粋€(gè)靜態(tài)文件服務(wù)器會(huì)直接將文件內(nèi)容返回給客戶端,不需要額外的服務(wù)器處理。完全靜態(tài)化會(huì)減少服務(wù)器的壓力。

偽靜態(tài)化服務(wù)器上并沒有靜態(tài) *.html文件,只是在服務(wù)器斷使用了Rewrite,將動(dòng)態(tài)URL進(jìn)行重寫,使動(dòng)態(tài)URL表現(xiàn)為靜態(tài)URL,以滿足網(wǎng)頁URL靜態(tài)需求但網(wǎng)頁依然為動(dòng)態(tài)調(diào)用的,,是需要很多服務(wù)器端處理的,比如url的模式匹配,從數(shù)據(jù)庫中查詢數(shù)據(jù)。

總結(jié):雖然完全靜態(tài)化URL的網(wǎng)頁有打開速度快的優(yōu)點(diǎn),但是網(wǎng)站內(nèi)容巨大的話,勢(shì)必會(huì)使網(wǎng)站的體積變大很多,會(huì)有很多的靜態(tài)化文件,網(wǎng)站遷移的話很麻煩,另一方面如果網(wǎng)站內(nèi)容很多的時(shí)候修改模板的話,再次靜態(tài)化的時(shí)候會(huì)是一個(gè)比較大的工作量。實(shí)際使用的話還是需要根據(jù)自己實(shí)際需要來選取。

Reference

  • https://github.com/WeihanLi/ActivityReservation/blob/dev/ActivityReservation

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的aspnetcore 实现简单的伪静态化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。