分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

short url短链接原理

发布时间:2023-09-06 02:13责任编辑:熊小新关键词:url

一、什么是短链接

  含义:就是把普通网址,转换成比较短的网址。比如:http://t.cn/RlB2PdD 这种,比如:微博;这些限制字数的应用里都用到这种技术。

  优点:短、字符少、美观、便于发布、传播。

  百度短网址:http://dwz.cn/

  google短网址: https://goo.gl/

二、原理分析

  当我们在浏览器里输入 http://t.cn/RlB2PdD 时会经历以下及格步骤:

  1.浏览器解析DNS,获取域名对应的IP;

  2.当获取到IP时,会往这个IP地址发送http的get请求以获取到RlB2PdD对应的长链接地址;

  3.HTTP通过301转到对应的长链接URL;

  注意:这里为什么使用301?301是永久性转移(重定向),也就是说,这个短地址一经生成就不会发生变化了,所以符合http中301的一个语义;

三、算法实现

  短地址一般都是由0-9A-Za-z这62个字符随机组合而成,所以我们可以生成一个62进制的串,可以根据10进制数转成62进制数;比如咱们存储数据库的时候自增的id,就可以根据这个id来生成对应的62进制的短码,作为短链接的码数,最长6位、最短1位,以下是实现的方法仅供参考: 

/*** * 10进制转为62进制 * @param $num * @return string */function from10_to62($num) { ???$to = 62; // 0-9a-zA-Z总计62个字符 ???$dict = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘; // 这个可以打乱顺序 ???$ret = ‘‘; ???do { ???????$ret = $dict[$num%$to] . $ret; // 取模 ???????$num = floor($num/$to); // 取余数 ???} while ($num > 0); ???return $ret;}/*** * 62进制转为10进制 * @param $num * @return int|string */function from62_to10($num){ ???$from = 62; ???$num = strval($num); ???$dict = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘; ???$len = strlen($num); ???$dec = 0; ???for ($i = 0; $i < $len; $i++) { ???????$pos = strpos($dict, $num[$i]); // 查找字符出现得位置 16 ???????$bcpow = bcpow($from, $len - $i - 1); // 取62得N次方(保留整数) ???????$bcmul = bcmul($bcpow, $pos); // 计算每个62进制字符得10进制值 ???????$dec = bcadd($bcmul, $dec); // 计算的值累加 ???} ???return $dec;}var_dump(from10_to62(1000));var_dump(from62_to10(‘g8‘));

  内容参考自:https://hufangyun.com/2017/short-url/

short url短链接原理

原文地址:https://www.cnblogs.com/zengguowang/p/9579988.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved