理解短网址

短网址已经很常见了,尤其是在微博中常见到的t.cn/...那么他们是怎么实现的呢,url是怎么缩短的呢?

其实url并不能缩短,或者说短网址并不是依靠将url“压缩”来实现的

它只不过是将你的长url存在一个地方,然后给你一把“钥匙”。拿着这把钥匙,就可以得到原来的长网址。
先来分析一下短网址的构成
1.百度 http://dwz.cn/6qgIGV
2.新浪 http://t.cn/RCOA2SS
都是一个很短的域名后面加一段字母和数字混合,以新浪为例,一共7位。9个数字加26个字母,再加上大小写,就可以有3521614606208种变化,也就是3万亿。所以短时间内并不用担心不够用
下面就用js来简单实现下url的encode和decde,在线演示地址http://jsrun.net/3piKp/edit

let urls={}
var encode = function(longUrl) {
    //生成7位hash码并转成数组
    var hash=Math.random().toString(36).substr(2,7).split('');
    for(let i=0;i0.5?hash[i].toUpperCase():hash[i];
}
    //数组转为字符串
    hash=hash.join('');
    将hash存在urls中
    urls[hash]=longUrl;
    return 'http://tinyurl.com/'+hash;
};

/**
 * 将短url还原
 *
 * @param {string} shortUrl
 * @return {string}
 */
var decode = function(shortUrl) {
    //取得hash值并返回url
    return urls[shortUrl.split('http://tinyurl.com/')[1]];
};

你可能感兴趣的:(理解短网址)