零后端、无数据库:ha.mr如何把链接压缩完全搬进浏览器?

发布时间:2026/10/15 14:56:52

零后端、无数据库:ha.mr如何把链接压缩完全搬进浏览器? 【免费下载链接】ha.mrStatic URL compressor and QR code optimizer项目地址https://gitcode.com/gh_mirrors/ha/ha.mr点击查看免费下载ha.mr 是一款完全静态的链接压缩URL 短链接 QR 码优化工具整个压缩和解压逻辑全部写在浏览器里零后端、无数据库。它没有一条短代码 → 原始链接的映射记录压缩结果就藏在你看到的短链接本身任何人打开它浏览器现场解压出原始网址。本文带你快速搞懂它的原理并用 3 步把它部署成自己的短链接服务。它和普通短链接服务有什么不同传统短链接服务比如 TinyURL 这类的工作方式是你提交长链接 → 服务器生成一个随机码 →把随机码 → 长链接写进数据库→ 用户点短码时查库、302 跳转。ha.mr 彻底反其道而行对比项传统短链接服务ha.mr存储位置数据库URL 本身#后或路径里解压发生地服务器查库用户浏览器本地跳转方式服务器 302 重定向页面提示Proceed to …?手动确认链接过期/删除可管理不存在没存过东西依赖后端 数据库一个静态 HTML 页面额外能力无一键生成更小的 QR 码换句话说ha.mr 的后端就是一个 nginx 配置和一张静态页面。这也是它最有趣的地方链接被压缩成了一段自解释的数据。核心原理把一个链接压成一个大数字压缩算法全部集中在 docs/compress.js 这一个文件里约 660 行核心思路分三步第 1 步挑掉人人都能猜到的部分。协议http/https、www.前缀、index.html结尾这些只占 1 个比特的是/否标记端口号直接按数值编码。第 2 步用 Huffman 码字典匹配常见网站。这是压缩率的灵魂。docs/compress.js 里内置了四套按真实链接频率排序的 Huffman 码字典——顶级域名、二级域名、域名字符、路径字符数据来自 Reddit 链接数据集和 url-dataset。效果非常直观com 的编码就是 1 —— 1 个比特 youtube 是 001github 是 10100第 3 步剩余部分逐段挑最优编码。路径被拆成一段一段path / query 参数 / hash每段先尝试塞进一个最小字符集纯数字小写Base64不行就退回 Huffman 编码两种方案比个大小留短的。最后所有比特被合并进一个任意精度的大整数BigInt再按输出字符集转成字符串。为什么用大整数而不是定长进制注释里写得很清楚一个只有 3 种取值的字段理论上只需约 1.6 bit二进制会浪费到 2 bit而共享一个整数流可以做到近乎无损。相关实现在 docs/compress.js。解压则是完全对称的过程decompress()把字符串还原成整数按同样的字典反向走一遍docs/compress.js。没有数据库payload 到底存在哪答案是——就存在链接里分两种形态见 docs/main.js文字短链接http://ha.mr#压缩串。#后面的片段标识符按浏览器规范根本不会发送给服务器服务端连请求都看不到 payloadQR 码HTTPS://HA.MR/压缩串。扫码后 payload 放在路径里没有 hash此时会切换到 QR 专用字母表。两种情况流程一致你在 docs/404.html 这个页面粘贴长链接docs/main.js 里的updateOutput()实时压缩并显示比原链接小 X%的绿色/红色提示你把得到的短链接分享出去访问者打开链接页面自动识别 payload、在本地解压出原始网址然后弹出一个确认框——Proceed to 原始链接?docs/main.js用户点Yes, redirect me →才跳转。手动确认这个看似小气的细节其实是刻意设计没有服务器就没有自动 302 的信任背书让用户亲眼看一次目标地址更安心。部署端只靠一个 nginx 技巧nginx.conf 里把所有路径都try_files到/404.html——任何 URL 都返回同一张页面剩下的事全是浏览器 JavaScript 的活。三种输出字母表QR 码为什么能更小docs/alphabets.js 定义了三个输出字符集字母表用途特点ASCII默认文字输出完整 URL 合法字符集QRalphanumericQR 码输出大写数字$*-./:专为 QR 码设计Emoji文字输出可选用表情组合编码纯为好玩QR 码这条路线有讲究普通 QR 生成器默认按字节模式编码而 QR 标准里的字母数字模式每 2 个字符只占 11 bit效率更高。ha.mr 的 QR payload 精确限定在这个模式的字符范围内并懒加载了轻量级 QR 生成器 docs/lean-qr/lean-qr.js仅在勾选Output QR code时才加载见 docs/main.js。生成 QR 时还可以拖动滑条调节最小纠错等级——纠错等级越低同样内容下的 QR 码越小docs/404.html。页面还会贴心地提醒如果链接里带着一堆跟踪参数?和之后的部分删掉它们往往比任何压缩算法都有效docs/404.html。一键部署3 步拥有自己的静态短链接服务第 1 步克隆仓库git clone https://gitcode.com/gh_mirrors/ha/ha.mr第 2 步Docker 启动推荐Dockerfile 基于nginx:alpine只拷贝静态文件compose.yml 把容器 80 端口映射到宿主 8080docker compose up -d # 浏览器打开 http://localhost:8080 即可第 3 步可选装一个命令行版hamr项目附带 Nix 包定义flake.nix、package.nix能装出一个名为hamr的 CLI本质是用 Node 跑 standalone.jsnix run .#hamr -- https://www.example.com/index.html # 压缩 nix run .#hamr -- https://www.example.com/index.html qr # 生成 QR 版短链 nix run .#hamr -- http://ha.mr#xxxx decode # 把短链解回原址没有 Nix 也没关系——核心就是两个文件把 docs/compress.js 和 docs/alphabets.js 拷进任何能跑 ES Module 的 Node 环境即可。诚实的边界它不是什么只支持 http/https且明确拒绝 URL 里带账号密码docs/main.js短链接可能比长链接还长字典是统计产物一个生僻小站的链接压缩后反而更大页面会用红色如实标出Output is X% larger不藏着掖着无法删除、无过期、无统计既然没存东西就什么管理功能都没有。作者在 README 里明确写着Keep the scope small——这是一个刻意保持极简的项目欢迎修 bug但谢绝功能堆叠README.md。适合你如果…不适合你如果…想要一个能自己托管、永远不需要运维的短链接页需要删除链接、统计点击量经常给实体物料印 QR 码希望码更小需要非 http(s) 协议ftp、git 等想学习链接也能被信息论压缩的完整实现期望随机码不可预测payload 完全可逆写在最后ha.mr 用最少的代码演示了一个反直觉的事实缩短链接本质是编码问题不是数据库问题。一个静态页面 两套 Huffman 字典 一个浏览器 JS 文件就完成了传统服务要后端才能做的事还顺手把 QR 码做得更紧凑。代码量小到可以一个下午读完——从 docs/compress.js 入手你会发现大整数当数据流这个设计比想象中优雅得多。赞分享【免费下载链接】ha.mrStatic URL compressor and QR code optimizer项目地址https://gitcode.com/gh_mirrors/ha/ha.mr点击查看免费下载相关推荐IIC-OSIC-TOOLS设计流程从RTL到GDS的完整开源芯片设计实践IIC OSIC TOOLS设计流程从RTL到GDS的完整开源芯片设计实践 在开源芯片设计领域IIC OSIC TOOLS集成基础设施协作开源IC工具为zip.js完全指南浏览器端文件压缩解压利器zip.js完全指南浏览器端文件压缩解压利器 zip.js是一个开源的JavaScript库专门用于在浏览器、Deno和Node.js环境中压缩和解压ZIP如何快速上手Qwen3-235B-A22B终极混合专家大模型指南如何快速上手Qwen3 235B A22B终极混合专家大模型指南 Qwen3 235B A22B是阿里通义千问团队推出的最新一代混合专家MoE大语言模型基础模型大模型NLPQwen创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/15 14:56:52

Android RTMP推流播放全链路实战:从黑屏到低延迟

简介:本资源是一套面向Android音视频开发者的RTMP直播推流实战资料包,聚焦移动端实时音视频采集、编码与网络传输全流程,适用于具备JNI基础和音视频入门知识的中高级开发者。压缩包共含12个核心模块,涵盖Nginx-RTMP服务器搭建文件…

2026/10/15 14:51:51

Kubernetes部署Redis Cluster生产实践指南

1. 项目概述:为什么在Kubernetes上部署Redis Cluster不是“炫技”,而是生产刚需我第一次在某电商公司的订单履约系统里看到Redis Cluster跑在Kubernetes上时,运维同事正盯着Prometheus面板里一条平滑的redis_cluster_keys_per_slot曲线发呆。…

2026/10/15 14:51:51

ThingsBoard源码编译全指南:从环境配置到部署避坑实践

先聊点实际的:物联网平台那么多,为什么偏偏要啃 ThingsBoard 的源码?我在前面几篇里已经反复强调过,ThingsBoard 这种量级的开源方案,光会装个 Docker 镜像去点点界面,其实很吃亏。你真要把它融进自己的项目…

2026/10/15 15:57:28

Windows shell:协议深度指南:Shell命名空间跳转原理与实战

1. 项目概述:这不是“快捷方式”,而是Windows命令行的精准导航系统“Windows10的shell跳转目录”——这八个字背后藏着一个被绝大多数用户长期忽视、却能每天节省5~15分钟操作时间的底层能力。它不是指右键菜单里那个“在此处打开PowerShell”的临时入口…

2026/10/15 15:57:28

C++ PTA编程题刷题攻略:高频考点、易错点与模板

临近期末,好多同学都在找上学期那套C PTA题目集的答案,尤其是编程题部分。后台私信里问得最多的就是“这道题到底哪里错了”“为什么样例过了还是没分”。其实PTA的编程题和前几部分不一样,它不是考记忆,而是考你能不能把课堂上学…

2026/10/15 15:57:28

HART温度变送器远程监控:以太网网关改造方案与工程实践

前段时间接手了一个挺磨人的改造任务:无菌车间里几十支温度变送器,现场数据都正常,可车间办公室想远程看实时温度,只能靠人工按时去现场抄表。更麻烦的是,这批变送器全是HART协议,数字通信能力是有的&#…

2026/10/15 15:57:28

STM32L431待机模式双路唤醒实战:WKUP引脚与RTC闹钟配置指南

简介:这份资源面向使用STM32L431进行低功耗开发的嵌入式工程师与学习者,聚焦待机模式下通过Wakeup引脚和RTC闹钟双路唤醒的完整实现方案,适合已具备一定HAL库与CubeMX基础、希望掌握电池供电场景节能策略的开发者参考。压缩包共188个文件&…

2026/10/15 15:52:27

现场总线二十年:从4-20mA到数字通信的工程演进与选型思考

1. 从一根线说起:为什么1985年前后的工厂里突然要搞“数字通信”如果你在1985年走进一家典型的流程工厂——不管是炼油、造纸还是水处理——你会看到控制室里有一面墙那么大的盘装仪表,每一台变送器、每一个阀门定位器、每一台泵的状态,都要靠…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑