Eisen's Blog

© 2023. All rights reserved.

如何让你的 web 站点存在 10 年以上

March 07, 2021

web

看了一篇博客 A Manifesto for Preserving Content on the Web 介绍了如何设计 web 可以让你的信息更好的被存储下来,感觉很受启发,在这里对这篇文章的观点做一个介绍,也回顾一下自己这么多年来遇到的类似的问题,并且结合目前的技术栈说说自己的一些想法。

什么导致了 web 内容不能长久

这篇博客的作者发现自己之前保存的各种 bookmark 都已经失效了,然后回想自己七年前发布的文章里所包含的 demo 链接已经成了奇奇怪怪的广告页面。于是开始考虑在经历了这么多年的 web 发展之后如何设计 web 内容可以让它支撑 10 年之久。

任何网站都是需要维护的,内容需要更新,域名需要续费,机器节点需要付钱。但是人的兴趣是会慢慢转移的,也许在某一个账单将要失效或者网页因为某个依赖崩掉而无法打开的时候,你就觉得要不算了,这东西打不开也没关系,然后你所维护的网站就消失了。我自己曾经也拥有多个域名,但是相当多内容都已经消失了呢。

然后 web 的技术栈一直在变化,从 jquery 的出现,到后来 bootstrap 再到后来的 backbone angular react。尤其是后来 Single Page App 的兴起导致真正的数据已经不再是 html 而是其背后的 API 了。一方面越发复杂的技术栈确实大大提升了当下的 web 应用的开发效率和使用体验(在有合理投入的前提下)但是这种形式也让搜索引擎以及类似的爬虫更难帮你把你的网页保存下来了。当然市面上还有一些静态网站生成器,比如目前的博客所用的 jekyll ,它依然将数据以静态 html 的形式提供。可惜岁月不饶人,随着 ruby 的热度的下降,至少对我来说 ruby 已经不再是我的核心技术栈了,目前我甚至很难让我自己的网站在本地跑起来了。前一阵子我也甚至在尝试如何将它切换到 hugo 或者 hexo 上去。

第三,不少人的信息都放在了 UGC 社区里,但是这些社区出于商业利益考量,他们的信息不太容易轻易的被倒腾到其他地方,但不少类似的东西也撑不住 10 年,想想开心网、人人网(校内),想想你的 qq 空间。

一些不错的解决方案

然后作者从三个角度去强调如何让自己的 web 信息得以更长远的保存:

  1. 降低维护成本:使用最原始的 html css 保证信息的基本可访问;别做什么 minify 把自己的 css 和 js 搞成乱码;每个内容最好放在一个完整的页面里,而不是分成多个子页面。
  2. 排除外部依赖,尽量减少坑队友:自己的图片最好自己维护,别随便就引用外部的;字体用最基本的,用的最多的。
  3. 对爬虫友好:html 可以更好的把爬虫抓取,当然这个爬虫也可以是你自己写的简单的爬虫;图片尽量压缩,不要占据太多空间,让备份的成本尽可能降低。

基于目前技术栈的解决思路

我觉得需要考虑的一个非常重要的事情就是...你为什么需要考虑 10 年甚至更长的维度的事情?不是说了么,我的兴趣都已经转移了,这东西死活跟我关系不大呀?

我觉得 10 年是个非常长的维度了,再次强调,技术栈的变迁会导致你的维护成本越来越大,所以最终即使有个东西你依然还算是有兴趣,也不想如何的耗费精力了。但如果维护成本不高,写个 10 年 20 年被博客也没什么兴趣不兴趣的吧?

然后作者也提到作为一个科研工作者,很多东西的生命周期越长其所产生的影响力也会越大,并且这种稳定可靠的信息会带给使用者信心,让他们更愿意为其添加引用(想象一下看到一个有 10 年历史的博客的时候,你会不会觉得这人挺靠谱的,居然让这个博客持续了这么久),也许最后就是你觉得的一些没有意义的东西被别人挖掘到了金子呢?

然后这里结合我的经历和目前的技术栈说说我觉得可以做的事情。

我自己的博客到今年也刚好 10 年了,期间有过一次重大的损失发生在 2014 年。在那个年头国内火过一个东西叫做 云引擎(使用体验和 heroku 很像),但是用的是 svn,这个东西的好处就是建站便宜并且自带个域名(毕竟国内域名备案是个很麻烦的事情)。于是我就把自己的 wordpress 博客放到那里了,但是由于自己的疏忽忘记续费了,14 年的博客丢的干干净净。幸好其他博客还有备份避免了全军覆没。后来自己的博客就用 jekyll host 在了 github。 托它的福一直稳定维护至今,但由于目前国内网络对 github page 已经非常不友好了,访问也是时断时续。考虑我博客的主要受众是我,那也就不必在意这么多了。

回顾 10 年,wordpress 所使用的 php 已经逐渐活在了段子里,ruby on rails 也逐渐成为了传说。唯有 html 依然屹立不倒...在未来,如何想要更好的维护自己关注的信息,可以从以下几个方向去考虑:

  1. 维护一个自己的域名,即使你所依赖的 heroku github digitalocean 都不再适合做你的内容 host 了,你依然可以换一个更合适的地方,然后依然用之前的域名进行访问。
  2. 使用静态网站生成器生成数据,保证以最原始的方式发布内容。虽然 jekyll 不行了,但是 Gatsby 兴起了,hugo 也还行,迁移成本还算是可以接受。这个思路在其他复杂应用里也会用得到(server-side-render)以提升搜索引擎的抓取效果。
  3. 类似于 GetPocket 或者是 印象笔记 的工具可以将你的内容保存下来(而不只是链接),算是一个备份吧,即使 html 都没了,文字图片本身也还能得以保留,而且排版还不错。
  4. 如作者所属,内容和图片最好放在一起,不要因为很多图床非常方便而直接使用。我之前不少的图片就放到了图床,现在看看应该是丢了不少了。以及非必要不使用图片,比如能贴代码的绝不截图。

最后,很多事情是要以更长的时间线去回顾才会发现其中的奥妙,如果连 10 年的记忆都留不下怎么才能温故而知新呢。而且,看看 10 年前自己的东西,也挺有意思呢。