请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

asp.net如何实现短网址

[复制链接]
查看4905 | 回复1 | 2012-12-17 19:24:18 | 显示全部楼层 |阅读模式
在新浪微博,腾讯微博等社交网站中,当你分享一个网站时,他会自动生成一个短网址。
那么在我们ASP.NET中如何实现短网址
短网址的名称网上叫的有很多种,网址缩短、网址压缩什么什么的,原理说白了就跟您带了一包东西去超市购物,进超市前把东西塞到超市的储物柜,然后拿到一个号码牌,您进超市就不用再背一大包东西了,只需要拿着一个小小的号码牌,出来时再把号码牌还回去,把您的背包拿出来,是一个道理。
知道原理,我们实现起来就简单了很多,无非就是接收一个URL,然后分配一个号码,当有人读取这个号码时,我们再把对应的URL调出来并重定向,就完事了。
所以表其实很简单,简单到只需要两个字段,一个自增ID,一个URL地址。
这里我就不写出详细的代码了,简单的增删改查这种最基本的操作相信大家应该都会。
那这样我们提交一个URL,得到的URL就类似:http://ibcibc.com/10086
看起来似乎就完成了,其实不然,我们拿到的自增ID是一个10进制的数字,而我们看到的大多数短网址后面的参数肯定不是全数字的,而是带了字母的,毕竟10进制表示的话,数据量上来后还是会显得有点长,那我们就可以把字母也用上吧,大小写字母加数字,相当于是62进制,那我们还需要再实现一个进制转换的方法来对ID进行压缩,进制转换其实也是很简单的东西,明白原理的随手都可以写出来,不明白的随便搜索一下也能写出来,这里我就把我自己的实现列出来吧,如果大家有更好的实现,不妨留言告诉我。

[C#] 纯文本查看 复制代码
static string Number = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

/// <summary>
/// 压缩ID标识
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
public string Short(long n) {
    string result = string.Empty;
    int l = Number.Length;
    while (n / l >= 1) {
        result = Number[(int)(n % l)] + result;
        n /= l;
    }
    result = Number[(int)n] + result;
    return result;
}

/// <summary>
/// 还原ID标识
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public long UnShort(string s) {
    long result = 0;
    if (s.HasValue()) {
        s = s.Trim();
        int l = s.Length;
        int m = Number.Length;
        for (int x = 0; x < l; x++) {
            result += Number.IndexOf(s[l - 1 - x]) * (long)Math.Pow(m, x);
        }
    }
    return result;
}

那我们刚才的URL:ibcibc.com/10086,经过压缩后就变成了:ibcibc.com/2CG,少了两个字母,当然,数字越大时效果越明显。
OK,明白了原理后,相信您自己做一个短网址的网站也不难了吧,难的只是有一个短的域名而已了。
要是觉得对您有帮助不妨点一下推荐吧,有什么想法或建议可以留言一起讨论噢~~~

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
2012-12-17 20:04:35
asp.net[tthread=d05045138w, 路人乙]http://app.qlogo.cn/mbloghead/3cc3a208f239cd4b127c[/tthread]
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则