最近对于千篇一律的科技新闻,感到了一丝的阅读疲倦。因此,想要寻找一些有有趣的灵魂或者独立思考的博文,打发平时无聊的摸鱼时光。但是,随着在互联网上探索有意思的博客,发现绝大部分都没有提供相关的订阅链接,这将很难追踪新博客的发布。这其中,相当一部分博客是通过静态方式发布博客的。

因此,本文的内容就是通过我的实践展示一下如何给静态博客增加 RSS 订阅。

什么是 RSS

首先我们来看一下维基百科上面对 RSS 的定义:

RSS(全称:RDF Site Summary;Really Simple Syndication),中文译作「简易信息聚合」,也称「聚合内容」,是一种 消息来源 格式规范,用以聚合经常发布更新资料的网站,例如 博客 文章、新闻、音频 或 视频 的网摘。RSS 文件(或称做摘要、网络摘要、或频更新,提供到频道)包含全文或是节录的文字,再加上发布者所订阅之网摘资料和授权的元数据。简单来说,RSS 能够让用户订阅个人网站个人博客,当订阅的网站有新文章是能够获得通知。

仔细阅读第二个英文全称,它表达的是:RSS 是一个十分简单的聚合技术,最主要的目的就是给个人网站和博客提供信息聚合,并通知所有订阅的阅读者,使信息能够更高效的传播。这正是我们想要的目的。

RSS 的格式

RSS 的本质其实很简单,只是一份定制化的 XML 文件,我们先来看看该文件的基础定义。这份定义参考自 RSSBoard 网站对于 RSS 2.0 版本的定义所提供的最简单的版本。

<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel><title>blog_title</title><atom:link href="blog_link" rel="self" type="application/rss+xml" /><link>blog_link</link><description>xxx</description><item><title><![CDATA[article_title]]></title><link>article_link</link><guid isPermaLink="false">article_id</guid><description><![CDATA[article_content]]></description><pubDate>article_date</pubDate></item>
</channel>
</rss>

可以看到,这份 XML 文件十分简单,仅包括对于需要阅读的内容的基础信息,并没有增加其他复杂的信息。其中比较特殊的可能是 guid 这个标签,它提供对于文章的唯一标识,但由于文章的超链接也是唯一的,因此可以把超链接作为 GUID 的标识。

如何生成 RSS

由于需要根据文章内容动态生成该 XML 文件,因此一般的静态博客没有动态处理的能力,所以提供不了这种功能。但是,现代化的静态服务平台都提供了 Continuous Integration(CI)的功能,我们可以利用该功能为我们的博客自动化提供该 XML 文件。

实现的思路总体来说就 4 步:获取最新的文章——根据内容拼接字符串——输出生成内容到 XML 文件——发布 RSS。

下面,我会以自身为例,在 Github 平台上通过 Travis CI 服务,自动化生成 RSS 文件所应该关注的点进行说明。

获取最新的文章

首先我们会遇到第一个问题,该 XML 文件中到底需要包含多少篇文章才算是最新的文章。在这里,我的建议是 10 篇。考虑到个人博客的属性,我们的更新频率不会特别高,10 篇文章足以达到人们通常阅读的频率。以 Git 协议管理的时间作为文章的发布时间,是一个不错的选项。

第二个问题是,RSS 如何知道我哪篇文章是新的?这里就需要严格控制文章的生成的 pubDate标签。在 RSS 2.0 的协议规范里面,规定了该时间的时间戳使用的是 RFC 822 的规范。否则,该订阅源在阅读器中会出现混乱的排序情况,尤其注意。Git 命令中提供了 format 选项 “%aD” 可以获取该规范下的时间戳。

根据内容拼接字符串

这里有两个标签需要特别注意一下的。

其一是link标签。由于部分人的文件是以中文命名的,这在 RSS 中并不能直接访问到正确的内容。正确的做法是自行将 URL 手动 encode 成标准的 Unicode 编码,可以仅对中文部分处理,也可以对整个 URL 进行编码。一般来说,仅对中文部分处理会使最终生成的 URL 相对好看一些。

另一是 description 标签。由于大部分人现在都是使用 Markdown 语言来写博客,而 Markdown 的纯文本并不适合直接阅读,而目前的 RSS 阅读器并不支持渲染 Markdown 语言。我们更希望将它进行解析到 HTML 语言,以便后续能够更好的渲染成优秀排版。这里,我们使用万能的瑞士军刀 Pandoc 软件即可解析。

但是,由于 HTML 语言和 XML 的语言都是属于标记型语言,混合在一起容易产生歧义解析。因此需要使用 <![CDATA[ html_content ]]> 逃逸字符来控制 HTML 内容不属于 XML 的一部分。

输出生成内容到 XML 文件

通过不同的编程语言控制文件输出到 XML 这不难。根据自己选择的编程语言生成即可。

这里,我建议大家对生成的 XML 进行校验,确保生成的 RSS 是正确并能够解析的。W3C 联盟提供了标准的 RSS 文件校验服务:https://validator.w3.org/feed/,可以在线输入和链接校验两种方式。

发布 RSS

对于静态博客,最直接的方法是将 XML 文件推送到静态服务平台,然后以 RAW 格式访问,即为一个合格的 RSS 订阅链接。

更进阶一步的方法,可以利用前端框架里面的静态路由方式,解析通用的 /feed 路由到生成的 RSS 文件中,配合标准的图标,能够让人清晰直观的发现该博客提供了 RSS 订阅链接。

后记

上述的说明只描述了我认为在这个方案中需要注意的事项,隐去了每一步的操作细节。想要抄作业的各位同学,可以移步到 https://github.com/Wsine/blog/blob/master/build.sh 查看具体的实现方法,直接复制到自己的仓库中就可以使用。

具体的展示可以查看我的博客看看具体效果:https://wsine.github.io/blog ,也欢迎订阅。

在这里,我也呼吁大家为自己的博客增加 RSS 订阅链接,如想分享可以在评论区留下你的订阅链接。

html个人博客_简单 4 步,为你的个人博客配置 RSS 订阅相关推荐

  1. dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单

    工作中,为了录入数据方便,数据规范,我们经常采用下拉菜单来制作规范模板,今天,技巧君和大家分享一下一级.二级和三级联动下拉菜单制作方法,文末有示例文件下载方法哦! 下拉菜单示例 一级下拉菜单 一级下拉 ...

  2. dns改成什么网速快_简单几步DNS设置,让你手机的WiFi速度提升几倍

    对于一个手机不离手的人,网速对他/她的重要性不用多说,而WiFi无疑是使用场景最多的连接方式,它的连接速度.下载/上传速度将直接影响我们的使用体验,小编在使用手机的过程中测试了很多针对WiFi的提速方 ...

  3. 4米乘以12米CAD图_简单四步,教你如何绘制好施工现场总平面布置图

    原标题:简单四步,教你如何绘制好施工现场总平面布置图 施工总平面布置图是拟建项目施工场地的总布置图.它按照施工方案和施工进度的要求,对施工现场的道路交通.材料仓库.加工场地.主要机械设备.临时房屋.临 ...

  4. 怎么用ai做出适量插画_简单10步教你用AI绘制矢量极简风格的人像插画

    简单10步教你把人物照变成极简风格插画!这类效果一直很受欢迎,不过想实现非常简单,今天这篇教程一步步带你上手.每个艺术家的插画里都有来自他自身创造出的节奏和风格,而接下来的一段时间,我们将学习绘制不同 ...

  5. 手机改小视窗什么意思_简单几步教你如何将手机投屏到电视,1秒小屏变大屏!...

    原标题:简单几步教你如何将手机投屏到电视,1秒小屏变大屏! Hi,大家好,我是小雨!最近有人在后台咨询小雨,怎样将手机画面投屏到电视上,让手机的小屏变大屏.今天小雨就来和大家一起聊一聊这个问题,简单几 ...

  6. python画画100行代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

    原标题:简单几步,100行代码用Python画一个蝙蝠侠的logo 转自:菜鸟学Python 蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对 ...

  7. 创建hugo博客_如何创建您的第一个Hugo博客:实用指南

    创建hugo博客 Hugo is a great tool to use if you want to start a blog. 如果您想创建博客,Hugo是一个很好的工具. I use Hugo ...

  8. 怎么把网页源码家入hexo博客_一款被大厂选用的 Hexo 博客主题

    首先这是一篇自吹自擂的文章,主题是由多位非前端程序员共同开发,目前经过一年半的迭代已经到达 v1.8.0 版本,并且获得大量认可,甚至某大厂员工已经选用作为内部博客,因此我决定写这篇文章向更多人安利它 ...

  9. 怎么让e-charts折线图只有6个刻度_简单6步,打开图表定制之门

    大家好,我是小明,一个爱图表如命的人. 很开心接到精进学苑的邀请,合作这一期公开课.因为之前的多次合作都很愉快,所以这一次想都没想就答应了. 答应之后,我就一直在想应该写些什么内容,大家到底需要什么样 ...

最新文章

  1. 短小精悍的多源最短路径算法—Floyd算法
  2. chrome设置微信ua_新支付宝json_ua分析
  3. html5结构与表现分离原则,网页简单布局之结构与表现原则分享
  4. python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声
  5. mysql自增长序号_MySQL rownumber SQL生成自增长序号使用介绍
  6. ELK-Metricbeat安装及使用
  7. 中国油冷却单元行业市场供需与战略研究报告
  8. 经验:常见木马和未授权控制软件的关闭 3
  9. 北森2020未来人才管理论坛:HR变革驱动中国企业转型
  10. 武汉工程大计算机学校地址,武汉工程学院
  11. 华为怎么显示返回按键_你见过这台会跑的“华为手机”吗?深度体验极星Polestar 2车机系统...
  12. 一台计算机多个显示,一台计算机如何有两个显示器并显示不同的内容?
  13. Winform打开和关闭控制台
  14. JS实现注册登录发送短信验证码动态显示60S倒计时完整案例
  15. 内网如何连接外网,注意!!
  16. Anaconda之通过可视化界面配置虚拟环境
  17. Android Broadcast用法
  18. 附件一:202x年xxx攻防演习授权委托书
  19. 数据库入门-----SQL语言概述
  20. leaflet 使用 wmts

热门文章

  1. android回传值,Android Activity 回传值
  2. 学习python环境安装_Python学习环境安装,python
  3. android开发工具箱专业版,安卓工具箱专业版下载-安卓工具箱专业版(Android Toolbox Pro) 安卓版v1.2.1-pc6手机下载...
  4. java导出文件大数据量一种处理思路:多文件压缩导出
  5. Stream流获取(集合,数组)
  6. Udacity数据分析(进阶)- 统计学:检验心理学现象
  7. 计算某地的从日出到日落各时刻的水平面直射和散射辐射,倾斜面总辐射的Python程序
  8. 一文了解半导体的历史、应用、未来
  9. 【引用】益和VA,闪耀中国软交会
  10. 网络系列--参考互联网的发展历史,分析物联网的发展现状与未来。