上篇《博客零碎知多少:揭秘那些鲜为人知的学识(二)》介绍了博客的根本功能设计要点,本篇介绍博客的协定或规范。
因为文章篇幅较长,本文将分为4篇推送,目录如下:

  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/Fee...,国内的博客园的RSS:http://feed.cnblogs.com/blog/...,有意思的是博客园网站的logo其实就是个RSS图标。

对于构建博客零碎而言,你通常不会再专门做个手机App,用户也不会为每一个博客都独自下载一个App,并且博客零碎与其余博客、网站之间仍然须要同步,不可能为每个合作伙伴都开发一套同步协定,大家仍然都用曾经是公认规范的RSS,因而RSS在2020年仍然是博客零碎推送文章的最佳路径。

参考链接:

https://en.wikipedia.org/wiki...

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...(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对于博客来说,就是通知阅读器,这个博客一共有哪些订阅源以及他们各自的订阅地址,通常就是每个文章分类是一个订阅源,全副文章又是一个订阅源。

(图:Moonglade的OPML)

5.4丨APML

APML即Attention Profiling Mark-up Language,它比OPML更鲜为人知。APML目前在互联网上曾经十分少见了,比WP还惨。作为博客行业的历史陈迹之一,抱着情怀简短介绍一下。

与OPML相似,它也是一种XML格局的申明文件,用来形容集体感兴趣的事物或话题,并分享给其余读者或博主,以帮忙阅读器或者博客零碎自身针对用户感兴趣的内容提供服务或更有针对性的广告。

参考链接:

https://en.wikipedia.org/wiki...

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...(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...

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...

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...

5.9丨Trackback

Trackback容许一个网站将更新告诉给另一个网站。这是网站作者在有人链接到其文档之一时申请告诉的四种类型的链接办法之一。这使作者能够跟踪谁链接到他们的文章。

参考链接:

https://en.wikipedia.org/wiki...

只管性能和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...

我的博客在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...

RSD也简直和下面的MetaWeblog接口一起应用。这样Windows Live Writer、Microsoft Word等工具才能够主动发现博客的MetaWeblog服务,而不须要手工去输URL。

5.12 阅读器视图

大部分浏览器和客户端都有阅读器视图,能够让读者在与博客网站页面格调齐全不一样的视图中阅读文章。例如,我博客某篇文章的失常页面长这样:

(图:Moonglade非阅读器视图文章页)

浏览器辨认到我的博客反对阅读器视图,就会亮起沉迷式浏览按钮。

(图:Microsoft Edge 浏览器沉迷式浏览按钮)

进入沉迷式浏览界面后,浏览器会主动提取文章的内容,辨认文章的题目、章节、图片,去掉导航栏、侧边栏等与文章无关的元素,并可让用户管制文本大小、背景色,甚至朗诵文章内容。


(图:Moonglade 的文章进入沉迷式浏览界面)

不仅我的博客有阅读器视图,设计良好的博客、新闻内容站都有,例如Azure的:


(图:Azure 官网博客阅读器视图)

另外,反对阅读器视图的网站,SEO肯定不会差。因而设计博客零碎时,请思考反对阅读器视图。

今天将次要介绍【设计博客零碎有哪些知识点】
请持续锁定咱们!


扫码关注微软中国MSDN,获取更多微软一手技术信息和官网学习材料!