跳转到帖子

一份关于在网络上保存内容的宣言


推荐的帖子

发布于

本页面旨在持久保存

 

       年末之际,正是清理和调整,为即将到来的新学期做好准备的好时机。我发现自己开始清理旧书签——没错,就是书签:这个曾经备受喜爱的浏览器功能,如今似乎已经败给了“地址栏自动补全”。然而,这种充满怀旧之情的整理行为却让我陷入了绝望。

一个又一个书签指向一个又一个失效链接。消失的有:kuro5hin 上关于科技文化的独到文章;朋友介绍给我的数学谜题集及其相关的学术讨论;高中时期伍德曼的逆向工程教程,让我第一次体验到掌控软件的感觉;甚至连我最近收藏的、在 Google+ 上揭露 USB-C 充电器不符合规范的一系列帖子,也全都不见了。

这不仅仅是链接失效的问题,而是保持网络上独立内容的活力变得越来越复杂,导致人们依赖平台和按时间排序的发布格式(博客、信息流、推文)。

当然,我也难辞其咎。我七年前发表的一篇论文的摘要中包含一个演示链接,但现在这个链接已经被一个垃圾页面占据,页面上只有一张南瓜图片。部分原因是出于懒惰,不想年复一年地维护和更新一个正常运行的网页应用。

我建议我的学生将网站迁移到 Heroku,并将作品集发布到 Wix。然而,任何拥有不可替代内容的平台终有一天都会消亡。Geocities、LiveJournal、what.cd,现在还有 Yahoo Groups。总有一天,Medium、Twitter,甚至像 GitHub Pages 这样的托管服务,也会因为无法继续发展或找不到可行的商业模式而被榨干价值后抛弃。

这个问题涉及方方面面。首先,维护内容需要投入精力。内容可能需要更新才能保持时效性,最终也可能需要重新托管。很多内容,曾经占据了绝大多数,都是由个人用户发布的。但个人用户(也许就是你?)会失去兴趣,所以有一天你可能就不想再费劲地把网站迁移到新的托管服务商了。

其次,越来越多的库和框架让 Web 变得更加复杂,但也更加精细。首先是 jQuery,然后是 Bootstrap、npm、Angular、Grunt、Webpack 等等。如果你是一位紧跟时代步伐的 Web 开发人员,那么这不成问题。

但如果不是这样,也许你是一名嵌入式系统程序员、创业公司首席技术官、企业级Java开发人员或化学博士生,你当然可以搞定如何搭建一些Web服务器和工具链,但你能年复一年、十年复十年地坚持下去吗?恐怕不行。明年当你遇到包依赖问题或想办法重新生成HTML文件时,你可能就会束手无策,把文件打包成zip文件,留到“以后”再处理。即使是像静态网站生成器(例如Jekyll)这样简单的技术栈也需要工作流程,而且总有一天会停止工作。你会陷入npm依赖地狱,甚至忘记打包发布版本的命令。拥有一个包含多个HTML页面的网站非常复杂;你怎么知道每个页面之间的链接关系?index.html.old、about.html的副本、index.html (1)、nav.html?

第三,这一点已被其他人提出(甚至被反驳),公共网络的消失,取而代之的是移动和网络应用程序、封闭花园(Facebook 页面)、即时 WebSocket 加载和 AMP,这降低了万维网上的网络比例,使其现在看起来更像是一个大陆网络,而不是一个“全球网络”。

那么,对于这些问题,我们能做些什么呢?这并非一个简单的问题,无法在一篇文章中解决。互联网档案馆(Wayback Machine)和archive.org可以帮助我们更长时间地保存一些内容。有时,也会有热心人士将内容重新托管到其他地方。

但解决方案需要多管齐下。我们如何才能制作出至少能保存十年且易于维护的网络内容?作为一名研究人机交互的人,我自然而然地会想到我们忽略的利益相关者。目前,网络内容的发布要么是针对专业网络开发人员(他们使用最新的框架和工作流程),要么是针对非技术用户(他们使用平台)。

但我认为我们应该同时考虑以下两方面:1)非正式的网站内容“维护者”,他们不会不断更新最新的网络技术,这意味着网站需要维护需求低;2)保存内容的爬虫和个人存档者,即“存档者”,这意味着网站应该易于保存和解读。

因此,我提出的方案是七条非常规的网站管理准则,旨在让信息型网站易于维护和保存。其指导原则是,维护者应努力使网站至少运行十年,甚至二三十年。这些观点未必具有争议性,但却是非主流的愿景——一份关于如何打造长寿网站的宣言。

        1.回归纯 HTML/CSS——我认为 HTML/CSS 已经发展到比以往任何时候都更强大、更易用的阶段。现在,无需再从包含大量 .js 引入文件的庞大模板入手,直接从头开始编写纯 HTML 代码即可。CSS Flexbox 和 Grid、canvas、选择器、box-shadow、视频元素、滤镜等等,大大减少了对 JavaScript 库的需求。我们可以避免在不需要时使用 jQuery 和 Bootstrap。网站集成的库越多,其脆弱性就越大。放弃 polyfill 和 CSS 前缀,坚持使用可在所有浏览器上运行的 CSS 属性。并且经常验证你的 HTML 代码;这可以避免将来遇到 bug 时头疼不已。

       2.不要压缩 HTML——压缩 HTML 及其相关的 CSS/JS 代码看似能节省宝贵的带宽,而且所有大公司都在这么做。但为什么不呢?其实你节省不了多少带宽,因为网页在通过网络发送之前就应该进行 gzip 压缩,所以提前压缩内容可能根本节省不了多少带宽。即使真的节省了一些字节(毕竟只是文本),你现在也需要构建流程,并将此操作添加到你的工作流程中,这使得网站更新变得更加复杂。如果 HTML 中存在 bug 或未来兼容性问题,压缩后的版本更难调试。而且这对用户也不友好;很多人最初都是通过点击“查看源代码”按钮来学习 HTML 的,而压缩 HTML 会阻碍这种通过查看代码来学习的学习方式。压缩 HTML 无法保留其教育意义,最终存档的只是一堆垃圾代码。

       3.尽量使用单页网站而非多页网站——多页网站难以维护。你可能会忘记哪些页面链接到哪些内容,而且为了减少冗余,还需要使用页面模板系统。一个人究竟能维护多少页面呢?只有一个文件,比如 index.html,既简单又容易记住。充分利用无限垂直滚动功能。你再也不用费力地在文件中翻找或使用 grep 命令来查找内容了。那么,如何对这个文件进行版本控制呢?应该使用 Git 吗?还是把它们放到一个名为“old/”的文件夹里?我个人喜欢用旧文件的停用日期来命名,比如 index.20191213.html。使用 ISO 格式的日期便于排序,也不会造成美式和欧式日期格式的混淆。如果一天内有多个版本,我会采用类似于日志文件的命名方式,比如 index.20191213.1.html。这样一来,一个不错的附加好处是,如果您记得日期,就可以访问文件的旧版本,而无需登录网络主机。

       4.杜绝一切形式的盗链——这个警示词似乎已经从互联网词汇中消失了,但它却是我见过一些原本运行良好的网站无故崩溃的原因之一。不要直接引用其他网站的图片,不要仅仅通过链接“借用”样式表,尤其不要链接到 JavaScript 文件,即使是原开发者托管的文件也不行。盗链通常被认为是不礼貌的行为,因为它会占用他人的带宽,降低用户体验,让其他网站追踪你的用户,更糟糕的是,如果你链接的网站更改了文件夹结构或直接离线,那么你的网站也会受到影响。Google Analytics 没有必要;存储你自己的服务器日志,并设置GoAccess或根据你的需要进行任何方式的分析,这样就能获得更详细的统计数据。不要免费将你的日志交给 Google。

      5.坚持使用原生字体——我们首先关注的是内容,所以装饰性和不常见的字体完全没有必要。要么使用13种网页安全字体,要么使用与访客操作系统默认字体相匹配的系统字体。使用系统字体在不同操作系统上的显示效果可能略有不同,但你的布局不应该脆弱到因为一次简单的换行就毁了它。这样你也不用担心字体闪烁的问题。你的重点应该是有效地向用户传递内容,让字体选择不引人注意,而不是为了满足你的设计虚荣心而刻意追求字体。

       6.极力压缩图片——这样用户浏览速度更快,归档空间更小,而且无需备份庞大的文件夹,维护起来也更轻松。图片可以保持同样的高质量,但体积更小。压缩SVG文件,无损压缩PNG文件,生成宽度与图片完全匹配的JPEG文件。花些时间找到最佳的图片压缩和缩小方法,同时又不损失质量,绝对值得。一旦Safari支持WebP格式,就切换到这种格式。务必尽可能缩小网站的整体大小。每一兆字节都可能造成损失,事实上,我的移动运营商(Google Fi)按每兆字节收费一美分,所以一个现在很常见的25兆字节的网站本身就要花费25美分,这差不多相当于我小时候买一份报纸的价格。

       7.消除URL失效风险——有些监控服务会在您的URL失效时通知您,避免您某天突然发现首页已经一个月无法加载,搜索引擎已经将其从索引中移除。毕竟,10年的时间远超大多数硬盘或操作系统的预期寿命。但为了彻底消除URL失效的风险,建议您设置第二个监控服务。因为如果第一个服务因任何原因停止运行(例如,他们转向付费模式、服务关闭、您忘记续订等等),您仍然会收到一次URL失效的通知,然后才意识到另一个监控服务也已停止运行,因为您没有收到第二次通知。请记住,我们的目标是确保网站运行超过10年(理想情况下是更长时间,甚至30年),而在此期间,许多服务都会停止运行,因此设置两个监控服务更加安全。

完成这些步骤后,请在页脚添加一段文字:“本页面旨在持久耐用”,并链接到解释其含义的页面。这段文字承诺维护者将尽力遵循本宣言中的理念。

在你反驳之前,我先说明一下,这显然不适用于网页应用。如果你要开发应用,那就按照你需要的流程来开发你的网页或移动应用。我甚至不知道有哪个网页应用能保持类似的运行状态超过十年,所以这似乎已经无望了(除了Philip Guo的Python教程,因为他采用了极简的维护策略)。这也不适用于像维基百科或Twitter这样的组织维护的网站。IT团队的薪资应该足够维持网站一段时间的正常运行了。

事实上,严格遵守这 7 条“规则”甚至并不那么重要,因为它们与其说是严格的规则,不如说是一种挑衅。

但假设网络上的一小部分人开始设计能够长期保存的网站,并上传旨在长期存在的内容,那会发生什么呢?人们可能会更倾向于链接到这些网站,因为它们有长期有效的保证。更普遍而言,人们可能会更加注重让自己的网页更持久。而且,用户和存档者在访问和存储这些网页时都能节省带宽。

效果是长期的,但成果是逐步积累的,网站所有者无需依赖他人或等待网络效应即可自行实施。您现在就可以为自己的网站这样做,这本身就是一种积极的成果。就像使用可回收购物袋而不是塑料袋一样,这是一个小小的个人行动。

本文旨在激发并引导个人采取行动,而非提出解决网络衰败问题的完整方案。对于复杂的社会技术系统而言,这只是一个小小的进步。因此,我非常希望看到这一目标得以实现。我计划至少保留此页面十年。

创建帐户或登录后发表意见

你需要成为会员才能发表意见

创建帐户

在我们的论坛注册新帐户,只需要几个简单步骤!

注册帐户

登录

已有帐户?请登录。

立刻登录
×
×
  • 创建新的...