如何选择写博客的平台

这是篇关于写博客的博客,尽管,包括我在内的许多人,即便是搭了个博客,也很难坚持更新,懒得更新是一方面,没有合适的内容写成博客也是一方面,图文的形式终究是有一定的局限性,更何况有些时候,一个坑踩过去了,想分享一下,但可能已经不好复现截图了。但对于一个程序员,对于一个计算机专业的学生,写技术博客还是一件很有意义的事,因此今天这里所谈论的博客,都仅仅指技术博客。

说到为什么要写博客,与他人分享自己的知识,展示自己的个人项目与成就,与更多的人进行交流,这些都是原因,但对于包括我在内的大部分人来说,你写的博客可能真的没多少人看,尤其是像我这种自建博客网站的,搜索引擎能不能搜到都是个问题,因此写博客最大的意义还是对于个人的。写一篇技术博客,尤其是学习笔记和教程类的,写博客的同时,也是对知识的一次重新整理,博客也是你一次学习的记录。知识是会遗忘的,我相信每个人多少会有学习了一些技术,很久没用,回过头又需要使用时,已经忘了大半了的情况。显然,此时回看自己的博客是最快拾起记忆的方式(前提是你自己写的够详细)。写文章本身自然也是锻炼自己表达能力的一种方式,相比于学生时代的各种作文,以及研究生逃不了的论文,显然写一篇博客分享自己感兴趣的技术和知识会更有意思。

当然这篇博客不只是为了告诉你为什么要写博客,更多的是为那些对写博客有点兴趣,有过写博客打算的人而写的。这篇博客的主题其实是以何种方式来写论文。

在现有的平台上写博客

在现有的平台上写博客是最简单、轻松、门槛最低的方式,在现有的平台上写博客,你的博客也更容易被更多的人看到,毕竟自建的博客网站流量怎么可能超过商业的博客论坛。

中国目前常见的博客平台有以下几种

  • CSDN

    • 中国最大的IT社区和服务平台,提供博客、问答、文章发布等功能。它适合各种技术领域的专业人士和爱好者
    • 优点是用户基数大,覆盖技术领域广泛,SEO 很好,搜索引擎很容易搜到
    • 缺点是信息质量参差不齐,且平台广告较多,不登录的情况下,限制复制,有的还限制浏览,社区氛围真的很差,而且很难找到高质量的博客
  • 掘金

    • 一个较新的技术社区,以技术文章分享和职业成长为主。掘金社区活跃,内容更新频繁,质量较高。
    • 优点是界面现代,用户体验好,文章质量相对较高。
    • 缺点是技术领域的深度和广度还在逐渐扩展中,前端相关的知识目前是最丰富的,其他领域的都相对少点,SEO一般
  • 简书

    • 虽然它是一个更广泛的内容发布平台,但也有很多技术相关的内容。
    • 优点是写作体验好,界面简洁。
    • 缺点就是作为一个非纯技术社区,它的技术内容深度和专业性可能不如CSDN和掘金,而且SEO也挺差的
  • 博客园

    • 一个很古老的网站了,界面也挺古老的,感觉没多少人用的样子
    • 优点是可以自定义界面,SEO较好
    • 缺点自然就是界面实在是太旧了,总感觉一副快倒闭的样子,而且社区活跃度不高
  • 知乎

    • 知乎是一个以问题与答案形式存在的中文社区,虽然它的主要形式不是博客,但因其庞大的用户基础和内容覆盖的广泛性,也成为了技术分享和讨论的重要平台之一。
    • 优点是界面简洁美观、社区活跃度高、SEO也不错
    • 缺点可能就是平台本身不是技术型的社区,什么类型的都有,小白也比较多,内容审核可能比其他技术社区严格一点?

    其他的还有诸如思否、开源中国等等,不过相对冷门一点,SEO一般也低

自行搭建

对于技术宅和二次元来说,搭建一个属于自己的网站才是王道,你可以随心所欲的自定义自己的网站,增加自己想要的功能(前提是不违法),优点嘛,自然是不必说了,缺点就是SEO很难比过商业的现有社区,不过对于那些高质量的个人博客,搜索引擎的权重其实也不低,前提是你的博客有足够的流量。不过自建博客往往能遇到不少同类,依靠友链的方式也能建立起一个志同道合的小群体(一群二次元技术宅),会有不一样的新奇体验。不过,随着一个个个人博客的关停,小群体也很容易就此解散就是了。

自建博客又可以分为静态博客和动态博客两种,本质上的区别就是有没有一个后端数据库,是否有与后端的数据交互

静态博客

静态博客是由静态网页组成的博客系统,每个页面都是预先生成的,通常是HTML文件,包括CSS和JavaScript。访问者访问静态博客页面时,服务器直接返回这些预先生成的文件。

优点

  • 速度快:静态页面可以直接由服务器提供,无需数据库查询或后端逻辑处理,加载速度快。
  • 安全性高:由于没有数据库交互,减少了SQL注入等安全风险。
  • 成本低:可以托管在任何静态文件支持的服务上,包括许多免费选项,如GitHub Pages。
  • 维护简单:不需要维护数据库或服务器端应用程序,更新时只需重新生成静态文件。

缺点

  • 功能限制:不支持实时内容更新、用户交互(如评论)等动态功能,除非通过第三方服务实现。
  • 内容更新不便:每次内容更新或更改后,需要重新生成并部署整个网站,对于频繁更新的博客来说可能较为繁琐。不过使用 GitHub 的 CI/CD 的话,其实也还算方便

常见的静态博客框架有以下几种,我没有实际使用过,仅供参考

Jekyll

  • 优点:
    • 成熟稳定:Jekyll是最早的静态网站生成器之一,有着广泛的用户基础和成熟的社区。
    • GitHub Pages集成:与GitHub Pages无缝集成,易于部署。
    • 简单易用:易于学习,特别是对于熟悉Markdown和Liquid模板语言的人。
  • 缺点:
    • 构建速度:对于大型网站,构建速度可能较慢。
    • 插件系统:Ruby插件可能难以安装和配置,尤其是在Windows系统上。

Hugo

  • 优点:
    • 快速构建:Hugo的构建速度非常快,适合大型网站。
    • 跨平台:使用Go语言编写,易于在多种平台上安装和运行。
    • 灵活的内容管理:支持多种内容类型、菜单、URL重写等。
  • 缺点:
    • 学习曲线:功能丰富,但配置和模板语法比较复杂,新手可能需要时间适应。
    • 社区规模:虽然社区活跃,但相比Jekyll小一些。

Hexo

  • 优点:
    • 易于上手:特别适合博客,简单易用,支持Markdown。
    • Node.js平台:对前端开发者友好,插件丰富。
    • 快速部署:支持一键部署到GitHub Pages、Heroku等。
  • 缺点:
    • 性能:对于非常大的站点,生成速度可能不如Hugo。
    • 中文文档:虽然有中文社区支持,但文档和社区资源可能不如英文丰富。

VuePress/VitePress

  • 优点:
    • Vue生态:适合使用Vue.js的开发者,支持Vue组件和开发模式。
    • 优化的内容加载:支持服务端渲染的静态文件生成,提高了加载速度。
    • 专注于文档:非常适合生成项目文档。
  • 缺点:
    • 专注度:主要用于文档,可能不如其他框架适合广泛的博客和网站项目。
    • 社区和插件:相对较新,社区和插件生态可能不如更成熟的框架。

Valaxy

  • 非常新的一个静态博客框架,刚起步阶段,主要基于Vue + Vite
  • 可以直接看作者的为什么选 Valaxy
  • 未来可期,很有潜力

总体来说,静态博客的搭建是有一定门槛的,如果你需要自定义主题和功能的话,那么对应框架所使用的语言显然是逃不掉的,如果不想新学习一门语言的话,那基本就是会什么选什么了。如果打算直接使用社区里别人做的主题和插件,那自然是先选喜欢的主题,再选择对应的框架了。以我的刻板印象来说,国内使用 Hexo 的人会更多一点,且 JavaScript 的学习门槛显然比 Go、Ruby要低,如果完全自建的话,新一代的 Valaxy 或许值得尝试

动态博客

动态博客一般是通过服务器端脚本(如PHP、Python)动态生成页面的博客系统。内容通常存储在数据库中,当访问者请求页面时,动态内容实时生成并展示给用户。像 Vue、React 等现代前端框架则既可以使用 VuePress 之类的静态站点生成框架来生成静态博客,也可以用来搭建动态博客的前端部分。

优点

  • 功能强大:可以实现实时内容更新、用户交互(如评论、搜索)等复杂功能。
  • 易于管理:通过后台管理系统,用户可以方便地发布和修改内容,无需手动更新静态文件。
  • 个性化内容:可以根据用户的请求显示个性化内容或选项。

缺点

  • 速度慢:生成页面需要数据库查询和服务器端处理,可能导致页面加载时间长。
  • 安全风险:由于与数据库交互,存在SQL注入等安全威胁,需要定期更新和维护以保证安全。
  • 成本高:需要支付服务器和数据库的维护费用,尤其是当流量较大时。

简单来说动态博客的上限显然是最高的,毕竟这已经是搭建一个完全体的网站了,前后端技术的上限就是动态博客的上限,动态博客最大的缺点还是成本和精力,由于需要后端数据库,因此必须购买服务器,即便是各大云服务器厂商的学生机一般也需要一年百元左右,如果不是学生那一个月百元都是正常的。一个个人网站的搭建,要经历购买云服务器、配置服务器环境、搭建网站、购买域名、ICP备案甚至公安备案,不过如果使用 WordPress 等动态博客框架,那部署起来倒是可能比静态博客还简单一点。具体可以参考我以前写的建站记录《建站伊始(一)》。当时我是使用的阿里云(毕竟当时配置和价格差不多),即便现在这个博客网站也还是在阿里云上(主要还是学生机续费似乎不能断,断了就不能再买了),现在我更推荐使用腾讯云,差不多的价格,腾讯云的配置(2核4G)是阿里云(1核2G)的两倍。

但是即便完成这些工作,也不能一劳永逸,云服务器是需要你自己维护的,万一遇到黑客攻击,也得你自己处理,服务器到期了,你还需要迁移网站数据等等。当然拥有一台服务器和一个备了案的域名,那可玩性是很高的,即便是 1 核 2G 的垃圾服务器,也能部署很多服务,当然前提是流量不高,自用为主的服务。有时间精力去折腾的话,还是很推荐整台云服务器玩玩的。

下面介绍一些常见的动态博客框架,其中我只用过 WordPress,以下介绍依旧是参考为主,留个初印象

WordPress

  • 优点:
    • 广泛使用:世界上最流行的内容管理系统,拥有庞大的用户和开发者社区。
    • 插件和主题丰富:数以万计的插件和主题可供选择,可以轻松扩展网站功能和外观。(这也同时造成了其过于臃肿)
    • 易于使用:直观的用户界面,非技术用户也能轻松管理。
  • 缺点:
    • 性能问题:对于高流量网站,未经优化的WordPress可能会遇到性能瓶颈。(这年头PHP的性能真的看不过去)
    • 安全问题:由于其流行性,WordPress是黑客攻击的常见目标。

Typecho

  • 优点:
    • 简洁高效:界面简洁,操作流畅,对服务器资源的要求较低。
    • 易于使用:安装简单,用户界面友好,适合博客新手。
    • 自由度高:插件和主题多样,易于自定义和扩展。
  • 缺点:
    • 社区活跃度:虽有一定的用户基础,但相比较其他平台,社区活跃度和更新频率较低。
    • 安全更新:较少的维护可能意味着安全补丁和更新不如其他系统及时。

Halo

  • 优点:
    • 现代技术栈:基于Spring Boot,采用现代技术开发,性能优良。
    • 美观的界面:内置主题美观,后台管理界面现代,用户体验良好。
    • 功能全面:支持Markdown编辑、主题和插件系统、多种文章分类方式。
  • 缺点:
    • 资源消耗:相对于Typecho等更轻量的系统,Halo在运行时可能会消耗更多的服务器资源。
    • 学习曲线:对于不熟悉 Java 和 Spring Boot 框架的用户,初次使用和定制可能会有一定的学习成本。

Solo

  • 优点:
    • 轻量级:设计为单用户博客系统,运行快速且资源消耗小。
    • 功能丰富:支持Markdown、插件扩展、多主题切换等功能。
    • 社区支持:有活跃的开发和用户社区,对于问题解答和资源分享相对及时。
  • 缺点:
    • 单用户限制:主要设计为单用户系统,可能不适合需要多用户协作的场景。
    • 定制和扩展:虽有一定程度的扩展性,但对于需要高度定制的用户来说,可能选项和灵活性不如更大型的CMS系统。

除了这些还有许多小众的个人搭建的开源博客框架,但这些质量就参差不齐了,而且大都长期无人维护,仅适合有能力自行维护的人作为二次开发的基础项目使用,我个人可以推荐一个我现在博客所使用的这个框架,虽然作者已经不更新了,但功能还是很齐全的,而且支持插件系统,可以自行开发插件扩展,唯一问题可能就是安全漏洞可能也没人修,如果你需要一个二次元博客可以看看 xblog

拓展玩法

图床

图床是一种专门用来存储图片文件的在线服务,允许用户上传图片并获取图片的URL链接。这些链接可以用于在网站、博客、社交媒体或其他在线平台上分享和显示图片。图床服务的使用在很大程度上简化了图片的在线分享和管理,尤其适用于需要在多个平台发布内容的用户。

  • 主要特点
    • 易用性:用户可以轻松上传图片并获得用于嵌入网页或分享的直链。
    • 减轻服务器压力:将图片存储在图床上可以减少自己服务器的存储压力和带宽消耗。
    • 全球访问:许多图床服务都提供CDN加速,确保全球用户都能快速访问存储的图片。
    • 多种访问权限:部分图床允许设置图片的公开或私有访问权限,增强了图片的管理灵活性。
  • 优点
    • 便于图片分享:通过提供图片的直接URL,用户可以非常方便地在网上分享图片。
    • 节省资源:对于个人博客或小型网站,使用图床可以有效节省服务器的存储空间和带宽。
    • 提升加载速度:借助图床服务的CDN功能,可以加快图片的加载速度,提升访问体验。
    • 易于管理:许多图床提供的管理界面方便用户对图片进行整理和管理。
  • 缺点
    • 依赖性:使用第三方图床意味着对其服务的依赖,一旦服务不稳定或停止,可能会影响到图片的显示。
    • 隐私和安全问题:上传到公共图床的图片可能面临泄露的风险,特别是敏感或个人图片。
    • 版权问题:需要确保上传的图片不侵犯他人版权,否则可能面临法律问题。
    • 使用限制:一些免费图床可能有存储容量或流量的限制,超出限制后需要支付费用。

一个网站大部分的流量其实都在图片上,对于使用自购云服务器的动态博客来说,如果博客中有大量的图片需要加载的话,是会拖慢博客的加载速度,对服务器资源的占用也会更高,虽然包年包月套餐的流量对于个人小站点是绰绰有余的,但是能节省些流量也是好的。而对于使用托管服务的静态博客来说,本来这些托管服务就即便都在国外,国内速度就不快,再加上大量图片的话,那博客加载速度就难说了。

理论上只要是能放图片的地方都能当图床,对于个人小站点,使用腾讯云、七牛云等提供的对象存储服务基本是绰绰有余的,而且有完善的 API 接口,配置起来教程也多,唯一需要担心的就是,被人恶意刷流量,厂商的对象存储服务一般都是以流量和存储空间计费,而且欠费时为了保证服务,是不会立刻停止的,那一不小心可就是天价帐单了。自建图床可以参考我的另一篇博客 Lsky pro 图床 + 腾讯云 COS_

而且图床也不是只有博客能用,使用 PicGo 等软件也可以方便上传电脑上的图片到各种图床,还可以实现 Typora 等笔记软件自动上传图片等,纯个人自用的情况下,安全风险就可以降到最低了

CDN

CDN 又名内容分发网络,具体原理就不多说了,主要有以下几个作用

  • 提高加载速度
    • 全球分布的服务器:CDN通过在全球多个数据中心存储网站的静态资源(如图片、CSS和JavaScript文件),用户的请求可以被自动重定向到离他们最近的服务器,从而减少了数据的传输距离,降低延迟。
    • 减轻服务器负担:通过缓存静态资源在边缘节点,CDN可以减少对源服务器的请求次数,降低服务器负载,进一步提升网站的响应速度。
  • 增强用户体验
    • 减少跳出率:快速的加载速度可以显著减少用户因等待加载而离开网站的可能性,特别是对于图片或内容较多的博客页面。
    • 适应高流量:在流量高峰期,CDN可以帮助分散请求,确保网站的稳定访问,避免因服务器过载导致的访问延迟或失败。
  • 提升网站安全性
    • DDoS攻击防护:CDN提供的分布式网络结构可以吸收和分散DDoS攻击流量,保护网站免受大规模攻击的影响。
    • 安全证书和加密:许多CDN服务提供SSL/TLS证书,确保数据在传输过程中的加密,增强了数据传输的安全性。
  • SEO优化
    • 提升搜索引擎排名:搜索引擎(如Google)倾向于给予加载速度快的网站更高的排名。通过使用CDN加速网站加载,有助于提升SEO表现。
    • 减少爬虫占用带宽:CDN可以有效管理搜索引擎的爬虫访问,减少它们对源服务器带宽的占用,确保正常用户访问的流畅。

当然,除了优点也自然有缺点,一个是和对象存储服务一样的问题,被恶意刷流导致的天价账单。当然,在正常使用的情况下,几个厂商的免费服务都是绰绰有余的。还有个问题就是 CDN 的配置是有一定技术门槛的,不当的配置可能导致资源缓存不当、内容更新延迟等问题。而且这点很玄学,我的个人博客就出现过因为 CDN,导致博客的登录状态异常的问题,而且这是在博客和 CDN 都没修改过任何配置的情况下,一段时间后莫名其妙出现的。由于 CDN 的缓存机制,很多问题是可能延迟出现的,而且很难 Debug,不同的博客框架、不同的 CDN 厂商、甚至不同的服务器环境都可能产生不同的效果,因此最好多参考一些使用相同框架的 CDN 配置的教程。

总结

对于有足够的时间与精力,并且愿意花费一定金钱购买云服务器的,那我强烈建议搭建一个动态博客,可以先从 WordPress 等动态博客框架开始尝试,之后尝试自建博客或者一些个人开源博客框架。不想花过多精力的也可以找个动态博客框架,换上满意的主题和插件,虽然算不上一劳永逸,除了服务器续费和过期的问题,基本几年不管它都没问题。对于学生来说,一个云服务器续费到你毕业肯定是没问题的,我阿里云的学生机就从大一一直续费到研一了,还能续费,除了中途因为阿里云学生计划中途更换了政策,迁移了一次服务器数据外,基本是不太用管的。

不过动态博客一般也不是长久之计,最后要么彻底放弃,要么就慢慢转到静态博客了,我个人的计划也是打算后面把博客换成静态博客了,毕竟服务器的开销长期维持也不算小,而且服务器也不是能一直续费下去的,在我博客更新频率大大降低的情况下,静态博客似乎是个更好的选择。想要一劳永逸,静态博客还是最佳的选择,不使用图床和 CDN 的情况下,完全没用成本和安全风险。

当然对于绝大部分人来说,现成的博客论坛才是最佳选择,不管是静态博客还是动态博客都需要你掌握和接触一些前端和 Web 知识,对于不打算接触这个领域的人来说,多少还是有点强人所难。

回到一开始,如果不考虑博客的分享和交流的作用,那其实本地些博客给自己看似乎也是一样的,但人嘛毕竟还是社会型的,多少还是希望自己的博客是有人看的,满足一下自己的分享欲的同时也能激励你保持更新(大概也许可以