最近网上冲浪发现个大瓜,Meta家的Instant Articles要凉凉了。想当年这货跟谷歌的AMP掐得火热,都是想把网页内容扒层皮搞成秒开。结果呢?一个接一个翻车。反观那个被遗忘在角落的RSS,才是真正的yyds。再加上有人搞出了内容“保真度”手动切换的神操作,这下子摸鱼看文可太爽了。
RSS全称是Really Simple Syndication(简易信息聚合),简单说就是个内容打包小推车。网站把新文章标题、摘要、链接塞进一个xml文件,阅读器定时去拉取,就能在同一个地方刷遍所有订阅源。不用挨个点开网站,更不用被算法推荐喂翔。关键这玩意儿纯开放,不受大厂拿捏。
RSS是个啥老宝贝
RSS就像报刊亭的送报员,把各家报纸(网站)的最新一期直接塞到信箱(阅读器)。没有广告弹窗,没有“猜你喜欢”的套路,干净得像刚擦过的玻璃。当年谷歌、脸书为啥要搞AMP和Instant Articles?说白了就是嫌RSS太“寒酸”,想给内容加个涡轮增压。但增压一时爽,维护火葬场。那些专有格式需要网站额外适配,等于多打几份工。而RSS呢?网站只要生成一次,全世界的阅读器都能认。
举个栗子:做个博客,如果用RSS,就相当于在门口挂了个公告板,谁路过谁撕一张带走。如果用Instant Articles,等于给每个平台(脸书、苹果新闻等)单独开个后门,还得按它们的规矩装修。现在脸书把后门焊死了,花大价钱装修的全白干。
实操:搭个低配版内容小灶
想让阅读体验起飞,不用折腾那些花里胡哨的。两条路,丰俭由人。
方案一:纯RSS订阅流
这套方案适合只想安安静静看内容的小伙伴,不用写一行代码。
- 选个RSS阅读器:推荐开源的Fluent Reader(电脑端)或手机上的FeedMe、NetNewsWire。去应用商店搜名字就能找到,注意别下成山寨版。
- 找网站的RSS地址:打开想订阅的网站,比如某个技术博客,在网址后面加
/feed或/rss试试。或者右键查看网页源代码,搜索application/rss+xml或application/atom+xml,里面的链接就是。很多站点在地址栏或侧边栏也有个橙色的wifi图标,点一下复制链接。 - 扔进阅读器:打开阅读器,找到“添加订阅”或“添加源”的按钮(通常是个加号或RSS图标),粘贴刚才复制的地址。点确定。
- 坐等更新:阅读器会自动每隔一段时间去拉取新内容。在同一个界面里,左边是订阅列表,右边是文章列表。点哪篇看哪篇,没有干扰元素。
在这过程中可能会踩坑:有的网站RSS只输出摘要,点“阅读原文”才能看全文。强迫症可以找找有没有“全文输出”的第三方服务(比如RSSHub),但那些服务有时会挂。另外注意,别订阅一堆吃灰的源,每周清理一次,否则信息过载比刷短视频还累。
方案二:博客自带的保真度切换
如果自己是站长,想给读者提供“高清”和“省流”两种模式,可以参考Jim Nielsen的骚操作。不需要JavaScript,纯HTML+重定向搞定。
第一步:规划目录结构
在每篇文章的生成目录下,搞出下面这种层级:
content/article-1/
├── index.html # 默认高清版(带图片、样式、交互)
└── _fidelity/
├── low/
│ └── index.html # 低配版:纯文本,去掉所有样式和图片
└── med/
└── index.html # 中配版:保留基本排版,去掉花哨特效第二步:写个构建脚本(以Node.js为例,但原理通用)
// build.js 片段
const fs = require('fs');
const { JSDOM } = require('jsdom');
function generateFidelityVersions(htmlContent, articlePath) {
const dom = new JSDOM(htmlContent);
const document = dom.window.document;
// 生成低配版:干掉所有img、iframe、script
const lowDom = new JSDOM(htmlContent);
const lowDoc = lowDom.window.document;
lowDoc.querySelectorAll('img, iframe, script').forEach(el => el.remove());
const lowHtml = lowDoc.documentElement.outerHTML;
// 生成中配版:保留img但去掉懒加载和复杂样式
const medDom = new JSDOM(htmlContent);
const medDoc = medDom.window.document;
medDoc.querySelectorAll('[loading="lazy"]').forEach(el => el.removeAttribute('loading'));
// 内联一个极简样式
const style = medDoc.createElement('style');
style.textContent = 'body { font-family: sans-serif; max-width: 800px; margin: auto; } img { max-width: 100%; }';
medDoc.head.appendChild(style);
const medHtml = medDoc.documentElement.outerHTML;
// 写入文件
const fidelityDir = `${articlePath}/_fidelity`;
fs.mkdirSync(`${fidelityDir}/low`, { recursive: true });
fs.mkdirSync(`${fidelityDir}/med`, { recursive: true });
fs.writeFileSync(`${fidelityDir}/low/index.html`, lowHtml);
fs.writeFileSync(`${fidelityDir}/med/index.html`, medHtml);
}第三步:配置重定向规则(以Nginx为例)
想让读者选完“保真度偏好”后自动跳转到对应版本,需要在服务器配个“小秘书”。假设读者在页面上点了个按钮(比如“低流量模式”),这个按钮把偏好存到Cookie里,然后Nginx根据Cookie值做内部重定向。
server {
location /article/ {
# 如果Cookie里有 fidelity=low,就去 _fidelity/low/ 找
if ($cookie_fidelity = "low") {
rewrite ^/article/(.*)/$ /article/$1/_fidelity/low/ last;
}
if ($cookie_fidelity = "med") {
rewrite ^/article/(.*)/$ /article/$1/_fidelity/med/ last;
}
# 默认返回原版
try_files $uri $uri/ /index.html;
}
}第四步:前端设置入口
在页面右上角加个下拉菜单或者三个小圆点,给读者选择“高清”、“均衡”、“省流”。选完后用JavaScript写个Cookie,然后刷新页面,Nginx就自动带飞了。
<select id="fidelitySelect">
<option value="high">高清(原汁原味)</option>
<option value="med">均衡(去花哨)</option>
<option value="low">省流(纯文本)</option>
</select>
<script>
document.getElementById('fidelitySelect').onchange = (e) => {
document.cookie = `fidelity=${e.target.value}; path=/; max-age=31536000`;
location.reload();
};
</script>注意几个关键点:构建时千万别把低配版里的图片链接全删了就完事,有些文章靠图片传达信息,删了读者一脸懵。更好的做法是把img标签替换成文字描述(从alt属性里取)。另外,Nginx的if在location里用多了可能性能拉胯,改用map模块更优雅,但上面的写法对小白最友好。还有个坑:Cookie设置path=/才能在整个站点生效,否则换个目录就失忆。
效果展示:假设访问 https://example.com/article/hello-world/,默认看到的是带图片和动画的豪华版。如果之前在设置里选了“省流”,再点任何文章,URL不变,但实际返回的是 /_fidelity/low/index.html,只有白底黑字,加载速度快得像坐火箭。对于在火车上或者用流量包月的人,简直是救命稻草。
为啥这套组合拳能打
RSS解决了“内容被抓在别人手里”的问题,不管平台咋作妖,只要网站还输出RSS,就能独立订阅。而保真度切换解决了“千篇一律”的问题,想刷图就刷图,想省流就省流。两者一结合:用RSS阅读器拉取内容时,如果阅读器支持请求头里的偏好设置(比如Prefer: fidelity=low),网站甚至可以针对不同客户端返回不同版本。虽然目前大部分阅读器没这么智能,但自己搭的博客可以先走起来。哪天主流阅读器跟进,那就真的大结局了。
