点击上方蓝字关注“汪宇杰博客”

导语

在我们生活的年代,博客并不稀奇,甚至可以说是随处可见。从最早的搜狐、新浪博客,再到每个人都曾记录青春的 QQ 空间,再到现在的 Vlog 与 Plog,似乎拥有一个自己的博客并不是什么难事。然而想要自己从零开始搭建一个出色的博客系统,则并非那么简单。可能有些懂技术的小伙伴会说,看上去只是简单的对文章 CRUD 就行了,也没有那么复杂啊。然而,真的是这样吗,这背后可能隐藏着更多玄机等待着我们去挖掘。掐指一算,我建设自己的博客已有11年,也见过许多程序员自己编写博客系统,但真正按规范和标准设计的功能完备的博客少之又少。本文我将分享自己在博客系统设计中积累的经验,介绍一些鲜为人知的博客技术,帮助想要搭建博客的小伙伴们进一步了解如何设计一个优秀的博客系统。

目录

由于文章篇幅较长,本文将分为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. 结束语

“博客”的前世今生

博客一开始不叫 Blog,而叫 Weblog,可能让很多人诧异的是,它并不诞生于Web 2.0时代,而是早在1997年已经问世。博客从最早的单用户(单独作者),逐渐发展为多用户(一个团队),即博客平台。而 Web 2.0 时代赋予了博客社交属性,可以让读者进行评论、订阅(RSS/ATOM),博客作者之间可以互相抱团(FOAF)、引用文章(Pingback),才让博客逐渐热门了起来。

博客系统也是各有千秋,PHP 有 WordPress,.NET 有BlogEngine。而最终,WordPress 几乎成为了事实上的博客系统的标准,它同时具备一些 CMS 的功能,微软官方 .NET 团队的博客也是采用 WordPress 搭建。

图 | 网络

阅读博客的用户除了使用浏览器,还会使用 RSS/Atom 阅读器。在 iPad 刚出来的年代,阅读器应用曾经风靡一时。订阅的博客一旦有新文章,阅读器就会自动收入,读者无需每天人肉检查是否有新文章发布。Microsoft 365 的 Outlook 至今保留着 RSS 阅读器的功能。

博客至今依然是表达自我、传播信息并与社区互动的最佳途径之一,就算微博(microblogging)出现,也没能使博客变得不再流行。所以说,博客之于互联网,就如同电子邮件一样,“姜还是老的辣”,博客作为一种文化载体,历久弥新,持久散发着光芒。

我的博客故事

我的博客项目最早可追溯到2003年,那时候我正在上初中,课余时间自学了 ASP 及 Access,构建了我的第一个个人网站,主题居然是黑客技术(年少无知,以为非常酷炫)。除了原创及转载技术文章,也提供常用软件工具下载等服务,有时候还假装大学生帮人完成ASP的毕业设计(毕竟说自己是初中生没人会相信)以换取Q币、QQ秀等(太有年代感…)。这个系统一直维护到2007年我上高二,它长这样:

(图:2003-2007年的个人网站)

高考之后,我终于有大量的时间学习自己想了解的技术,且不用担心被家长埋怨不好好学习。那会我自学了ASP.NET(VB),构建了我的第二代个人网站,主题不再是黑客技术,而是常规的计算机技术分享,主打原创技术文章(日志),同时也开发了相册、播客等 SNS 功能,并于2009年上线,它长这样,一直维护到2011年。

(图:2009-2011年的个人网站)

2012年毕业以后,我当了一名工程师(程序猿),没有精力维护软件下载、相册和播客等栏目,于是决定只做技术文章,大刀阔斧地改版了我的网站,博客的雏形就出来了。为了构建博客,我参考了同样是 .NET 的 BlogEngine 项目。其实国内某著名的 .NET 博客平台,最早就使用了 BlogEngine 项目,甚至它当年还有个中文版,叫博易。不过与其直接魔改他人的项目,我选择看懂代码以后,自己用不同的方式去实现。本文之后要介绍的许多内容也来源于这段时间的学习。

毕业7年后,发现各项技术发展迅猛,.NET 技术与其他主流技术的竞争非常激烈,而长期在外企的我主要运用的还是 .NET 的技术。此时我下定决心,在业余时间里,用 .NET Core 重写我的博客系统,命名为 Moonglade,并开源到GitHub(https://github.com/EdiWang/Moonglade)目前博客地址是 https://edi.wang。内容面向国外社区,部署在微软Azure的海外服务器上(国内访问可能较慢)。

刨除初中时代牛刀小试的 ASP 不说,从2009年到2020年这11年间,我的博客代码横跨十几年 .NET 发展历程,从ASP.NET WebForm 2.0 VB.NET + Access 到现在的ASP.NET MVC Core, C# 8 及 Azure SQL Database,也整合了 Azure App Service、Azure DNS、Azure DevOps、Azure Active Directory、Azure Blob、Azure AD、Azure CDN 和 Application Insights 等技术。

(图:Moonglade博客系统使用的Azure服务)

谁是博客的受众?

在谈设计博客之前,我们首先要明确,你的读者从何而来?搞清楚这一点后,才能够联想出用户将如何使用你的产品。这也正是本文所要介绍的博客的设计方法和要点。

开发和运营博客11年的经验积累和数据统计告诉我,对于一个常规技术博客,95%以上的流量来自于搜索引擎,并且多数情况下读者只查看这一篇他们所需要的文章,固定读者或订阅用户占总流量的比例相当少。这是由于技术博客分享的内容多数为解决一个具体的技术问题。而技术人员遇到技术问题的第一反应就是去搜索引擎查找有没有人曾经遇到过并已经解决,有可能复制粘贴文章里的代码去解决自己项目里的问题后,就忘记了博主的存在。只有真正觉得博主的文章有一定水平,才会开始浏览博客里的其他内容。

不难发现,我们的用户入口几乎就是搜索引擎,所以一个优秀的博客系统,并不是只做好文字功夫,需要大量考虑SEO及其他针对机器和系统之间交互的博客协议,时刻考虑SEO也是贯穿本文的重点

本文并不教大家代码的设计、技术实现,而是教大家博客系统的设计思路和要点。至于技术方面,大名鼎鼎的WordPress、前辈们的 BlogEngine.NET,以及我的Moonglade,目前都已开源的,可供大家随时研究。

下篇我将介绍【博客基本功能设计要点】

敬请关注

汪宇杰博客

.NET | Azure | 微软MVP

长按扫码关注我们

博客系统知多少:揭秘那些不为人知的学问(一)相关推荐

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

       点击上方关注"汪宇杰博客" ^_^ 上篇<博客系统知多少:揭秘那些不为人知的学问(三)>介绍了博客协议或标准.本篇终章介绍设计博客系统有哪些知识点. 1.&quo ...

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

    点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(一)>介绍了博客的历史.我的博客故事及博客的受众来源.本篇精彩继续,介绍博客基本功能设计要点. ...

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

    点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(二)>介绍了博客的基本功能设计要点,本篇介绍博客的协议或标准. 1."博客" ...

  4. 魔众博客系统 v4.4.0 后台菜单快捷搜索 优化已知字段问题

    魔众博客系统是一个小巧强大的博客程序,后台可以高扩展,拥有手机端.电脑端自适应. 魔众博客系统发布v4.4.0版本,新功能和Bug修复累计6项,后台菜单快捷搜索 优化已知字段问题. 2022年01月2 ...

  5. LAMP搭建phpMyadmin管理平台以及wordpress个人博客系统

    具体请参考http://maoqiu.blog.51cto.com/8570467/1384026 这篇博文 安装phpMyadmin工具 [root@www ~]# mkdir /usr/local ...

  6. 为什么程序员应该写博客?用什么博客系统?在哪写?

    点击蓝色"五分钟学算法"关注我哟 加个"星标",天天中午 12:15,一起学算法 作者 | 程序员小吴 来源 | 五分钟学算法 写博客的好处很多很多,如果你不知 ...

  7. 基于SpringBoot+SSM+MySQL的个人博客系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85769040 资源下载地址:https://download.csdn.net/downl ...

  8. 免费打造个人博客系统

    自媒体越来越受重视,写作能力也变得更加重要,但万事开头难,第一步:构建一个人文章发布平台,都难道不少人,今天介绍一种免费搭建个人博客系统的方法,不仅能成为自己写作平台,还可以将文章轻松发布到其他公共平 ...

  9. 基于spring boot2的个人博客系统

    welcome rodert 需要项目请直接到文章末尾获取 简介 基于spring boot2.mybatis.bootstrap开发的个人博客系统.下面做了功能和相关技术的描述,适合初学spring ...

最新文章

  1. RAC rac_liftSelector
  2. 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)
  3. eclipse导出doc文档
  4. java tcp链接慢_jmeter tcp长连接性能测试
  5. 大一微积分笔记整理_大一高数笔记.doc
  6. thinkphp5部署于Linux中nginx多站点解决方案
  7. 通俗认识理解OpenAI Five
  8. 用.NET编程风格实现Ajax——Atlas快速入门
  9. 【算法】1282. 用户分组(多语言实现)
  10. keep-alive用法
  11. ajax post请求导致的跨域和浏览器兼容性问题
  12. 线段树辅助——扫描线法计算矩形面积并
  13. 安卓手游脚本开发!闭关在家37天“吃透”这份345页PDF,已开源
  14. 计算机技术在建筑学的应用论文,计算机应用于建筑设计中的影响的论文
  15. 【LeetCode刷题笔记-87 42:接雨水(三解法)】
  16. POJ 1950 Dessert
  17. python 例外 重试_Python例外:简介
  18. 学习ios牛人40天精通iOS开发的学习方法
  19. 分治限界算法思想和应用
  20. 如何将图片放大不失真,保持清晰度?

热门文章

  1. 第9章 SQL Server合同管理应用需求描述
  2. echarts 调色盘、渐变色
  3. Ubuntu 上使用qcad将dwg转 pdf
  4. 抖音快手最新去水印视频下载教程
  5. mvc三层架构(用户信息管理系统)
  6. NISP(一级二级)介绍
  7. 第一章:信息化和信息系统
  8. Cisco IOS XRv 9000 Router Release 7.5.1 ED 下载
  9. 笔记 学习51单片机串口中断
  10. 因为错过,所以才懂得珍惜