短网址原理及实现
原理
首先,系统把一个长的地址,用一个算法转换成一个短码(或者系统生成一个唯一的id号),然后系统将这个短码和url的映射关系存储到数据库或者缓存中
当用户访问生成的短网址的时候,系统从数据库或者缓存中查询到的对应的长url地址,
请求通过http 301(或者302)跳转到对应的长url
301 是永久重定向,302 是临时重定向。短地址一经生成就不会变化,所以用 301 是符合 http 语义的。同时对服务器压力也会有一定减少。 但是如果使用了301,我们就无法统计到短地址被点击的次数了。而这个点击次数是一个非常有意思的大数据分析数据源。能够分析出的东西非常非常多。所以选择302虽然会增加服务器压力,但是我想是一个更好的选择。
生成算法
对长url的转换算法可以自定义,主要目的就是将长字符串变短,并且要求算法不可逆
简单来讲md5都可以,其他复杂或者更优算法都可以自行实现
但是推荐使用分布式自增算法,系统生成一个id,将这个id与长url对应存储
如果对短链接感兴趣,可以加QQ444-9156方便交流