lead
In the era we live in, blogs are not uncommon and can even be said to be everywhere. From the earliest Sohu and Sina blogs, to the Qzone where everyone once recorded their youth, to the current Vlog and Plog, it seems that it is not difficult to have your own blog. However, it is not so easy to build an excellent blogging system from scratch. Some friends who understand technology may say that it seems like it is just a simple CRUD to the article, but it is not that complicated. However, is this really the case? There may be more mysteries hidden behind this waiting for us to explore. To sum up, I have been building my own blog for 11 years, and I have seen many programmers write their own blog systems, but there are very few blogs that are truly designed according to specifications and standards. In this article, I will share my experience in blog system design, introduce some little-known blog technologies, and help friends who want to build blogs further understand how to design an excellent blog system.
directory
Due to the long length of the article, this article will be divided into 4 push articles, with the following contents:
- The past and present life of "blog"
- My Blog Story
- Who is the audience for blogs?
- Basic functions design points
- 4.1 Article (Post)
- 4.2 Comment (Comment)
- 4.3 Classification (Category)
- 4.4 Tag
- 4.5 Archive
- 4.6 Page (Page)
- 4.7 subscription
- 4.8 version control
- 4.9 Theme and personalization
- 4.10 Users and permissions
- 4.11 plug-in
- 4.12 Handling of pictures and attachments
- 4.13 Dirty word filtering and review of comments
- 4.14 static
- 4.15 notification system
- Blog agreements or standards
- 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 Reader view
- What are the knowledge points in designing a blog system
- 6.1 Do all time zones really use UTC?
- 6.2 HTML or Markdown
- 6.3 MVC or SPA
- 6.4 security
- concluding remarks
The past and present life of "blog"
Blog was not called Blog at first, but Weblog. What may surprise many people is that it was not born in the Web 2.0 era, but was published as early as 1997. Blog has evolved from being a single user (individual author) at its earliest, to multi-user (one team), namely a blog platform. The Web 2.0 era has given blogs social attributes, allowing readers to comment and subscribe (RSS/ATOM), and bloggers to group with each other (FOAF) and quote articles (Pingback), which has made blogs gradually popular.
Blog systems also have their own strengths. PHP has WordPress, and. NET has BlogEngine. In the end, WordPress almost became the de facto standard for blogging systems. It also had some CMS functions, and the blogs of Microsoft's official. NET team were also built using WordPress.

Users who read blogs also use RSS/Atom readers in addition to browsers. When the iPad first came out, reader apps were all the rage. Once a subscribed blog has a new article, the reader will automatically receive it, and readers do not have to check whether new articles have been published every day. Outlook for Microsoft 365 still retains the function of an RSS reader.
Blogging is still one of the best ways to express yourself, spread information, and interact with the community. Even the emergence of microblogging has not made blogs obsolete. Therefore, to the Internet, blogs are like e-mail:"ginger is still hot when old." As a cultural carrier, blogs are always new and shine forever.
My Blog Story
My blog project dates back to 2003. At that time, I was in junior high school. I taught myself ASP and Access in my spare time, and built my first personal website. The theme was actually hacking technology (I was young and ignorant, and I thought it was very cool). In addition to original and reprinting technical articles, it also provides services such as downloading common software tools. Sometimes it also pretend that college students help people complete ASP graduation projects (after all, no one will believe them if they say they are a junior high school student) in exchange for Q coins, QQ shows, etc.(Too contemporary…). This system was maintained until 2007, when I was in sophomore year. It looked like this:

After the college entrance examination, I finally had a lot of time to learn the skills I wanted to know, and I didn't have to worry about being scolded by my parents for not studying well. At that time, I taught myself ASP.NET (VB) and built my second-generation personal website. The theme was no longer hacking technology, but regular computer technology sharing, focusing on original technical articles (blogs). At the same time, I also developed photo albums, podcasts and other SNS functions, and was launched in 2009. It grew like this and was maintained until 2011.

After graduating in 2012, I became an engineer (programmer monkey) and had no energy to maintain software downloads, photo albums, podcasts and other columns, so I decided to only do technical articles and radically revised my website, and the prototype of a blog came out. In order to build a blog, I referred to the BlogEngine project, which is also. NET. In fact, a famous. NET blog platform in China first used the BlogEngine project. It even had a Chinese version called Boyi. However, instead of directly modifying other people's projects, I chose to understand the code and implement it myself in a different way. Much of the content to be introduced later in this article also comes from this period of study.

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

Not to mention the ASP that was a small test in junior high school, in the 11 years from 2009 to 2020, my blog code spanned more than ten years of. NET development, from ASP.NET WebForm 2.0 VB. NET + Access to the current ASP.NET MVC Core, C#8 and Azure SQL Database, and also integrates Azure App Service, Azure DNS, Azure DevOps, Azure Active Directory, Azure Blob, Azure AD, Technologies such as Azure CDN and Application Insights.

Who is the audience for blogs?
Before we talk about design blogs, let's first clarify, where do your readers come from? Only after you understand this can you imagine how users will use your product. This is also the design method and key points of the blog that this article will introduce.
开发和运营博客 11 年的经验积累和数据统计告诉我,对于一个常规技术博客,95%以上的流量来自于搜索引擎,并且多数情况下读者只查看这一篇他们所需要的文章,固定读者或订阅用户占总流量的比例相当少。这是由于技术博客分享的内容多数为解决一个具体的技术问题。而技术人员遇到技术问题的第一反应就是去搜索引擎查找有没有人曾经遇到过并已经解决,有可能复制粘贴文章里的代码去解决自己项目里的问题后,就忘记了博主的存在。只有真正觉得博主的文章有一定水平,才会开始浏览博客里的其他内容。
不难发现,我们的用户入口几乎就是搜索引擎,所以一个优秀的博客系统,并不是只做好文字功夫,需要大量考虑SEO及其他针对机器和系统之间交互的博客协议,时刻考虑SEO也是贯穿本文的重点。
This article does not teach you the design and technical implementation of code, but teaches you the design ideas and key points of the blog system. As for technology, the famous WordPress, the predecessors 'BlogEngine. NET, and my Moonglade are all open source and can be studied at any time.
-
- In the next chapter, I will introduce [Key Points for Basic Blog Function Design]**
please pay attention to
