写个简单的短链接服务


基本说明

短链接服务就是一个将比较长的url转换为比较短的url的功能.

如果要实现一个短链接服务,至少要实现这几个功能:

  • 将较长的url转换为较短的url
  • 访问短链接可以直接访问到原网站/链接
  • 时效性:永久有效/过期机制
  • 统计与效率

如何将url转换成短链接

可以使用id自增算法,为每一个url生成一个十进制数字的id,id是一次递增的,保证了唯一性.

然后将十进制数字转为由[09,az,A~Z]等62个字符表示的62进制数.

那么一个url应该对应一个短链接还是多个呢?

如果需要对url进行访问统计,渠道统计,营销效果统计等,来源统计等,最好还是一对多的关系,即一个url可能会有多个短链接.

访问短链接时如何跳转到原url

上面已经有一个唯一的id,根据id可以获取到原始的url,然后进行301或者302重定向跳转.

那么到底是用301还是302呢?

如果需要进行各种统计,最好使用302重定向.

时效性

可以设置一定的过期时间,及时清理过期数据.

统计与效率问题

每次访问的时候,会通过服务的服务器获取原始url,因此可以进行统计.

应用场景

  • 各种推广营销

    不同渠道/用户产生不同的短链接,进行判断

  • 内容友好

    更短的链接,更友好的方式

  • 简化二维码显示

  • 各种隐晦链接转换,更利于传播

实现

https://github.com/jiangkang/go-short-url


文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
Dart中的Isolate Dart中的Isolate
基本概念每个Isolate有自己的内存和EventLoop.不同的Isolate只能通过传递消息来进行通信. Dart的Isolate没有内存共享机制,这样设计有一个好处,就是在处理内存分配和回收时,无需加锁,因为仅一个线程,并不会抢占.
2020-11-25
下一篇 
Flutter-从Widget导出图片 Flutter-从Widget导出图片
在Android中从View中导出图片,使用的是Canvas + Bitmap. 在Flutter中,同样支持这种功能,使用的是RepaintBoundary 使用RepaintBoundary包装WidgetRepaintBoundary
2020-11-12
  目录