• 短链接系统的研究


    一、短URL系统的原理:
    短URL系统的核心是将长的 URL 转化成短的 URL;在访问系统时,先使用短地址A访问短URL系统,由短URL系统映射到对应的长地址B,然后客户端再重定向(301或者302)到B网址,如下图所示:

    二、短 URL 的好处:
    1、链接变短,对于有长度限制的平台发文,可编辑的文字就变多了

    2、短链接生成的二维码更易于识别,而长链接的二维码密集难识别

    3、短链接更加简洁好看且安全,不暴露访问参数。

    4、能规避关键词、域名屏蔽等手段

    5、链接太长在有些平台上无法自动识别为超链接

    三、短 URL 系统的设计与实现:
    系统核心实现思路:使用发号器发号 => 为每个长地址分配一个号码ID => 将号码与长地址存放在DB中 => 将号码转化成62进制,用户表示最终的短地址并返回给用户(假设短地址长度为8位,62的8次方足够一般系统使用了) => 用户使用62进制的短地址请求服务 => 将62进制的数转化成10进制 => 在DB中寻找对应的长地址 => 将用户请求重定向到对应的地址上

    短链接服务在使用时,一般使用重定向:301 和 302
    301永久重定向和 302 临时重定向。

    301永久重定向:第一次请求拿到长链接后,下次浏览器再去请求短链的话,不会向短网址服务器请求了,而是直接从浏览器的缓存里拿,减少对服务器的压力。
    302临时重定向:每次去请求短链都会去请求短网址服务器(除非响应中用 Cache-Control 或 Expired 暗示浏览器进行缓存)
    使用 301 虽然可以减少服务器的压力,但是无法在 server 层获取到短网址的访问次数了,如果链接刚好是某个活动的链接,就无法分析此活动的效果以及用于大数据分析了。而 302 虽然会增加服务器压力,但便于在 server 层统计访问数,所以如果对这些数据有需求,可以采用 302,因为这点代价是值得的,但是具体采用哪种跳转方式,还是要结合实际情况进行选型。

    目前做了一个测试站点:https://zzdwz.cn和http://u5p.cn

  • 相关阅读:
    数据结构与算法(一):初识算法和计算模型
    Flutter学习笔记(41)--自定义Dialog实现版本更新弹窗
    Mybatis-Plus简介及HelloWorld实现(附视频教程)~连载中
    “乐观锁”解决高并发下的幂等性问题(附java实测视频教程)
    git merge&rebase区别
    GIT TAG标签使用
    idea操作github远程库分支
    idea操作GIT本地库分支操作
    eclipse GIT本地库分支操作
    git分支操作命令
  • 原文地址:https://www.cnblogs.com/sp1086/p/16290767.html
Copyright © 2020-2023  润新知