zoukankan      html  css  js  c++  java
  • 短链服务

    示例(不可用)
    长链:http://wqigdsk.sq.com?id=2011&name=china
    短链:http://cq.cn/Rb2IDs

    原理

    将长链存入数据库并返回自增Id,然后把Id转换成62进制
    假设短码为6位,每一位由[a-z,A-Z,0-9]共62个字母组成,则共有62^6=568亿种组合,已经够用。

    在浏览器中输入上面的地址,会向http://cq.cn发送HTTP GET请求,并传短码。
    此时,在数据库中查询短码记录,结果存在重定向到长链;结果不存在,返回HTTP Status Code 404或不跳转

    301永久重定向,302临时重定向
    短地址一经生成就不会变化,所以用 301 是符合 http 语义的。同时对服务器压力也会有一定减少。
    但是如果使用了 301,我们就无法统计到短地址被点击的次数了。而这个点击次数是一个非常有意思的大数据分析数据源。能够分析出的东西非常非常多。所以选择302虽然会增加服务器压力,但是我想是一个更好的选择。

    相关问题

    1. 被恶意攻击,消耗自增Id
    同一长链返回同一短码,IP限制

    2. 短码安全问题
    在自增Id从1开始时,短码可以被推断出,可以扩展短码,增加一位随机码

    3. 同一长链短码是否应该相同
    应该相同,将长链和短码对应缓存,在转换成短码之前进行缓存匹配

  • 相关阅读:
    遇到屏蔽selenium的站点如何突破
    subprocess.Popen stdout重定向内容实时获取
    thinkphp Composer安装指南
    职场片
    php。。。
    多线程相关
    狂刷1000题~~2
    狂刷1000题~~1
    关于eclipse中看不到源码的问题
    一篇看懂++i i++
  • 原文地址:https://www.cnblogs.com/ycm-up/p/10880342.html
Copyright © 2011-2022 走看看