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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

博客系统知多少:揭秘那些不为人知的学问(三)

發布時間:2023/12/4 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 博客系统知多少:揭秘那些不为人知的学问(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方關注“汪宇杰博客”

上篇《博客系統知多少:揭秘那些不為人知的學問(二)》介紹了博客的基本功能設計要點,本篇介紹博客的協議或標準。

1.“博客”的前世今生

2.我的博客故事

3.誰是博客的受眾?

4. 博客基本功能設計要點

????4.1 文章(Post)

????4.2 評論(Comment)

????4.3 分類(Category)

????4.4 標簽(Tag)

????4.5 歸檔(Archive)

????4.6 頁面(Page)

????4.7 訂閱

????4.8 版本控制

????4.9 主題及個性化

????4.10 用戶及權限

????4.11 插件

????4.12 圖片及附件的處理

????4.13 敏感過濾及評論審查

????4.14 靜態化

????4.15 通知系統

5. 博客協議或標準

????5.1 RSS

????5.2 ATOM

????5.3 OPML

????5.4 APML

????5.5 FOAF

????5.6 BlogML

????5.7 Open Search

????5.8 Pingback

????5.9 Trackback

????5.10 MetaWeblog

????5.11 RSD

????5.12 閱讀器視圖

6. 設計博客系統有哪些知識點

??? 6.1 時區真的全用UTC?

????6.2 HTML還是Markdown

????6.3 MVC還是SPA

????6.4 安全

7. 結束語

5.1丨RSS

RSS(Really Simple Syndication)是一種基于XML的標準,普遍應用于包括博客在內的內容類網站,由Dave Winer于1999年發明,少年計算機天才Aaron Swartz參與定義規范,可惜后者于2013年1月自殺,年僅26歲。

RSS也是博客系統中最有標志性特性之一,其在博客中的應用廣泛度成為了事實上的標準,沒有RSS的博客系統就像看到不帶攝像頭的手機一樣有趣。

RSS文件的擴展名可通常是 .rss 或 .xml,也可以不定義拓展名(如Moonglade的RSS)。內容為近期發表的博客文章的XML描述,包括標題、時間、作者、分類、摘要(也可以是全文)等信息。

(圖:Moonglade的RSS源)

RSS是寫給機器看的,可用于網站之間同步內容,例如當年人人網(前校內網)可通過RSS導入博客文章為日記。而對于普通用戶,則需要RSS閱讀器應用來訂閱博客。通常這樣的閱讀器里不止訂閱一個作者的博客,而是該用戶關心的所有博客。閱讀器通常也是跨平臺、跨設備的,用戶可以在電腦、平板、手機,甚至樹莓派上訂閱RSS源。

(圖:2012年我在初代iPad上通過RSS訂閱自己博客)

(圖:最新版Microsoft 365 Outlook 中RSS訂閱我的博客)

部分瀏覽器(如早期的火狐)也可以自動識別一個博客的RSS地址,并在瀏覽器中訂閱。其自動發現原理是查找網頁head中有沒有這么一個東西:

<link rel="alternate" type="application/rss+xml" title="Edi Wang" href="/rss" />

但是RSS有個缺點,它并不能夠由服務器主動向客戶端推送,而需要靠客戶端自動去服務器拉取。而過去10年中,隨著移動端的興起,消息推送服務彌補了RSS的不足,各大平臺也幾乎都推出了自己的手機APP,因此RSS已經被許多網站淘汰。但并不意味著RSS沒用了,至今仍有大量網站仍然提供RSS訂閱。例如微軟Channel 9電視臺的RSS: https://channel9.msdn.com/Feeds/RSS/,國內的博客園的RSS:http://feed.cnblogs.com/blog/sitehome/rss,有意思的是博客園網站的logo其實就是個RSS圖標。

對于構建博客系統而言,你通常不會再專門做個手機App,用戶也不會為每一個博客都單獨下載一個App,并且博客系統與其他博客、網站之間依然需要同步,不可能為每個合作伙伴都開發一套同步協議,大家依然都用已經是公認標準的RSS,因此RSS在2020年依然是博客系統推送文章的最佳途徑。

參考:https://en.wikipedia.org/wiki/RSS

5.2丨ATOM

ATOM和RSS的作用幾乎一樣,但ATOM的出現是為了彌補RSS的一些設計缺陷。例如對于文章發表日期,ATOM采用RFC 3339的時間戳,而RSS采用的是RFC 822標準。ATOM也可以標識文章的語言、允許payload中出現RSS不允許的XHTML、XML和Base64編碼內容等。

許多博客系統(包括我的Moonglade)同時提供RSS及ATOM源。

參考鏈接:https://en.wikipedia.org/wiki/Atom_(Web_standard)?

5.3丨OPML

“OPML(概述處理器標記語言)是用于輪廓的XML格式(定義為“一棵樹,其中每個節點包含一組具有字符串值的命名屬性” )。它最初由UserLand在其Radio UserLand產品中作為大綱應用程序的本機文件格式開發,此后已被用于其他用途,最常見的是在Web Feed聚合器之間交換Web Feed列表。

OPML規范將大綱定義為任意元素的層次結構,有序列表。該規范相當開放,因此適用于多種類型的列表數據。

Mozilla Thunderbird 和許多其他RSS閱讀器網站和應用程序都支持以OPML格式導入和導出RSS feed列表。”

參考:https://en.wikipedia.org/wiki/OPML

通俗易懂的說,OPML對于博客來說,就是告訴閱讀器,這個博客一共有哪些訂閱源以及他們各自的訂閱地址,通常就是每個文章分類是一個訂閱源,全部文章又是一個訂閱源。

(圖:Moonglade的OPML)

5.4丨APML

APML即Attention Profiling Mark-up Language,它比OPML更鮮為人知。APML目前在互聯網上已經非常少見了,比WP還慘。作為博客行業的歷史遺跡之一,抱著情懷簡短介紹一下。

與OPML類似,它也是一種XML格式的聲明文件,用來描述個人感興趣的事物或話題,并分享給其他讀者或博主,以幫助閱讀器或者博客系統本身針對用戶感興趣的內容提供服務或更有針對性的廣告。

參考鏈接:https://en.wikipedia.org/wiki/Attention_Profiling_Mark-up_Language

WordPress可以通過插件實現APML,BlogEngine則自帶APML,我的Moonglade不支持APML。

5.5丨 FOAF

FOAF即Friend of a Friend,也是個寫給機器看的文件,描述了一個人類的社交關系,通常在博客中可以用FOAF表示博主和其他博客之間的 “友情鏈接” ,只不過這個友情鏈接是寫給機器看的。好讓機器明白,誰才是你的基友,從而給讀者推薦基友博客里的內容。

WordPress可以通過插件實現FOAF,BlogEngine自帶FOAF,我的Moonglade不支持FOAF。FOAF和APML的現狀差不多,已快絕跡。

參考鏈接:https://en.wikipedia.org/wiki/FOAF_(ontology)

5.6丨 BlogML

BlogML是一套跨博客系統的數據標準,凡是實現了BlogML的博客系統,就算語言、平臺不一樣,也都可以互相導入、導出文章等數據。就好比HTML5是個標準,Edge、Chrome、Firefox是瀏覽器,只要針對HTML5寫的網頁都能跨這些瀏覽器運行。

BlogML也誕生于.NET社區之中,隨后發展成了標準。除了本身就是.NET的BlogEngine等系統以外,PHP寫的WordPress都支持BlogML。當年支持BlogML的還有Windows Live Spaces,Subtext,DasBlog等。我的Moonglade不支持BlogML。

當前BlogML的標準schema是2.0,更新于2006年11月25日。看起來這個標準也已經……

參考:https://en.wikipedia.org/wiki/BlogML

5.7丨Open Search

如果博客實現了Open Search規范,那么博客的搜索功能就能夠自動整合到用戶的瀏覽器里,從而便于用戶直接在瀏覽器地址欄使用你博客的搜索服務作為搜索引擎(就像必應、谷歌那樣)。

實現Open Search只需兩部,首先在網頁的head里加入指向opensearch定義文件的link

<link type="application/opensearchdescription+xml" rel="search" title="Edi Wang" href="/opensearch" />

然后輸出opensearch文件即可

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">

<ShortName>Edi Wang</ShortName>

<Description>Latest posts from Edi Wang</Description>

<Image height="16" width="16" type="image/vnd.microsoft.icon">https://edi.wang/favicon.ico</Image>

<Url type="text/html" template="https://edi.wang/search/{searchTerms}"/>

</OpenSearchDescription>

文件描述了博客的名稱、簡介、圖標以及搜索內容的URL pattern。瀏覽器一旦識別這個文件,會自動將你的博客注冊到搜索引擎列表里去。然后讀者就可以直接在瀏覽器地址欄里搜索關鍵詞,并顯示博客自己的搜索結果頁面。

(圖:在地址欄中搜索我博客的內容)

(圖:搜索結果頁面)

Open Search的具體規范和標準可參考:https://en.wikipedia.org/wiki/OpenSearch

5.8丨Pingback

Pingback用于博客系統之間通訊,一旦自己的文章被他人引用就會收到pingback請求,而自己引用了他人的文章就會向對方博客發送一個pingback請求,因此完成一次Pingback需要己方和對方的博客共同支持pingback協議。由于是標準協議,所以pingback并不要求雙方的博客使用同一款博客產品,例如我用.NET Core寫的Moonglade可以完美和PHP寫的WordPress互相ping。Pingback也并不限制網站類型一定得是博客,任何CMS或內容網站想要支持Pingback都沒問題。

Pingback的技術原理也不復雜。

發送Pingback請求:

得到自己文章的URL A、對面被引用文章的URL B,請求B,看看它有沒有pingback終端,如果有,構建一個HTTP Request,內容是一段XML:

<methodCall>

?????? <methodName>pingback.ping</methodName>

?????? <param>

????????????? <param><value><string>A</string></value></param>

????????????? <param><value><string>B</string></value></param>

?????? </param>

</methodCall>

這樣B所在的網站就知道A文章引用了B文章,處理pingback后,會給A所在的網站一個成功與否的響應。

(圖:Moonglade的pingback終端)

接受Pingback請求:

自己的文章URL A被他人文章B引用,并收到了一個pingback XML。首先自己要驗證別人的pingback請求長得是否奇怪,以保證安全性,例如有沒有正常的methodName、有沒有合法的雙方URL、URL是否能正常訪問、是否有奇怪的URL(例如localhost或有潛在攻擊行為的特殊構造)。保證pingback請求沒問題后,請求B的頁面,抓取B網頁的title內容、B的IP地址,記錄到自己的數據庫中,并和A文章關聯。

收到的Pingback通常以系統身份自動在文章下加評論,但這個設計不是規范之一,你可以自由發揮,例如Moonglade把pingback集中起來在后臺給博客管理員查看。

(圖:Moonglade后臺管理中查看哪些網站引用了自己博客的文章)

參考:https://en.wikipedia.org/wiki/Pingback

5.9丨Trackback

Trackback允許一個網站將更新通知給另一個網站。這是網站作者在有人鏈接到其文檔之一時請求通知的四種類型的鏈接方法之一。這使作者可以跟蹤誰鏈接到他們的文章。

參考:https://en.wikipedia.org/wiki/Trackback

盡管功能和Pingback類似,但Trackback通常需要手工發送,并需要給對方提供一篇文章的摘要。而Pingback的過程是又雙方博客系統共同完成的全自動操作。

5.10丨MetaWeblog

MetaWeblog是一套基于XML-RPC 的Web Service,這套API定義了幾個標準接口,用于文章、分類、標簽等博客常規內容的CRUD。只要實現了這些接口的博客系統,就可以讓博主不用通過瀏覽器登錄博客后臺寫文章,而使用計算機上安裝的客戶端去寫博客。主流的客戶端包括 Windows Live Writer、Microsoft Word。在客戶端里可以完整的編輯文章、插入圖片、設置分類,甚至可以將博客的主題同步到客戶端中。

可能它看起來也像是過時的博客協議之一,但直到2020年的今天,最新版的Microsoft 365套件依然完整支持實現了MetaWeblog API的博客系統。

(圖:Microsoft Word的博客支持)

類似MetaWeblog的博客API還有Blogger API, Atom Publishing Protocol, Micropub。

參考:https://en.wikipedia.org/wiki/MetaWeblog

我的博客在2012年曾經996 007完整實現了MetaWeblog + RSD,但如今30歲了,在.NET Core里暫時不打算實現這個了,畢竟有多少人還在用Live Writer和Word寫博客(哭。

5.11丨RSD

Really Simple Discovery(RSD)是XML格式和一種發布約定,用于使博客或其他Web軟件公開的服務可由客戶端軟件發現。這是一種將設置編輯/博客軟件所需的信息減少到三個眾所周知的元素的方法:用戶名,密碼和主頁URL。任何其他關鍵設置都應該在與網站相關的RSD文件中定義,或者可以使用提供的信息來發現。

為了使用RSD,網站的所有者在首頁的head里放置了一個鏈接標記,用于指示RSD文件的位置。MediaWiki使用的一個示例是:

<link rel="EditURI" type="application/rsd+xml" href="https://en.wikipedia.org/w/api.php?action=rsd" />

然后用RSD文件去表示各種API的接口

<?xml version="1.0"?>

<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">

??? <service>

??????? <apis>

??????????? <api name="MediaWiki" preferred="true" apiLink="http://en.wikipedia.org/w/api.php" blogID="">

??????????????? <settings>

??????????????????? <docs xml:space="preserve">http://mediawiki.org/wiki/API</docs>

??????????????????? <setting name="OAuth" xml:space="preserve">false</setting>

??????????????? </settings>

??????? ????</api>

??????? </apis>

??????? <engineName xml:space="preserve">MediaWiki</engineName>

??????? <engineLink xml:space="preserve">http://www.mediawiki.org/</engineLink>

??? </service>

</rsd>

參考:https://en.wikipedia.org/wiki/Really_Simple_Discovery

RSD也幾乎和上面的MetaWeblog接口一起使用。這樣Windows Live Writer、Microsoft Word等工具才可以自動發現博客的MetaWeblog服務,而不需要手工去輸URL。

5.12 閱讀器視圖

大部分瀏覽器和客戶端都有閱讀器視圖,可以讓讀者在與博客網站頁面風格完全不一樣的視圖中閱讀文章。例如,我博客某篇文章的正常頁面長這樣:

(圖:Moonglade非閱讀器視圖文章頁)

瀏覽器識別到我的博客支持閱讀器視圖,就會亮起沉浸式閱讀按鈕

(圖:Microsoft Edge 瀏覽器沉浸式閱讀按鈕)

進入沉浸式閱讀界面后,瀏覽器會自動提取文章的內容,識別文章的標題、章節、圖片,去掉導航欄、側邊欄等與文章無關的元素,并可讓用戶控制文本大小、背景色,甚至朗讀文章內容。

(圖:Moonglade 的文章進入沉浸式閱讀界面)

不僅我的博客有閱讀器視圖,設計良好的博客、新聞內容站都有,例如Azure的:

(圖:Azure 官方博客閱讀器視圖)

另外,支持閱讀器視圖的網站,SEO一定不會差。因此設計博客系統時,請考慮支持閱讀器視圖。

下篇將主要介紹

【設計博客系統有哪些知識點】

歡迎關注

汪宇杰博客

.NET | Azure |?微軟MVP

長按二維碼獲取我的最新技術分享

喜歡本篇內容請點個在看

總結

以上是生活随笔為你收集整理的博客系统知多少:揭秘那些不为人知的学问(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。