zoukankan      html  css  js  c++  java
  • 短网址服务

    短网址源于Twitter中140个字符的限制,有时候一个长网址就占了100个字符,所以需要一个服务将长网址转化为短网址,比如百度短网址服务。

    通常短网址服务需要两个接口:

    • 生成短网址
    • 根据短网址查询长网址

    当直接访问短网址时,短网址服务器返回一个302和真实网址,然后浏览器会再去访问长网址

    生成短网址

    短网址可以类比DNS,也是内部维护了一套对应关系然后提供访问:

    短网址设计关键点在于后缀token的算法,这里给出一种:

    CHARS = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789"
    

    我们将token认为是一个64进制的数,那8位64进制的数完全可以满足短网址申请的数量且不重复。

    基本过程如下:

    long_url -> redis.incr(index) -> 10_to_64(index) -> token
    

    当然10_to_64返回的是一个字符串而不是真正的数字,基本实现如下:

    def 10_to_64(num):
        if num == 0:
            return CHARS[0]
        res = []
        while num:
            num, rem = divmod(num, len(CHARS))
            res.append(CHARS[rem])
        return ''.join(reversed(res))
    

    获取到token后只要和URL一起存入数据库即可

    根据短网址查询长网址

    查询时从短网址中解析出token然后查询数据库即可,基本过程如下:

    short_url -> token = parse(short_url) -> select url from database where token=`token` -> url
    
  • 相关阅读:
    一探前端开发中的JS调试技巧(转)
    JavaScript模板引擎实例应用(转)
    本周汇总
    完美解决IE8不支持margin auto问题
    移动端H5适配流程
    原型继承
    每周笔记
    一个页面多个bootstrip轮播以及一个页面多个swiper轮播 冲突问题
    如何让整个网页倾斜
    前端知识体系
  • 原文地址:https://www.cnblogs.com/Peter2014/p/11627932.html
Copyright © 2011-2022 走看看