zoukankan      html  css  js  c++  java
  • JS应用MD5散列计算头像URL

         当前个人档案的头像面临访问量过大的问题,目前的解决方案是把上传和显示头像的功能独立出来成为一个新的站点并把此站点转放到另外一台的Web服务器上,以提高其响应能为。同时,因为原来的对头像的获取是通过aspx加载真实的头像(jpg)然后显示出来的,这样的处理方式在大访问量的情况之下对性能是有影响的,所以现在当独立到新的站点时就取消了这样的功能,把原来头像URL如:http://profile.csdn.net/billok/picture/1.jpg 转换为真实的访问地址"http://avatar.profile.csdn.net/1/c/5/1_billok.jpg"

        其中的“/1/c/5/"是对用户名进行MD5生成的,在asp.net中这个很简单,不过对于一些纯用JS生成的URL就需要使用JS进行MD5运算了。提取JS的MD5,是有现成的类库的,只要引用一下md5.js就可以很方便的使用了,剩下的工作就是对Avatar的URL进行封装一下就可以了。

    /*JS获取用户头像真实URL*/
    var AvatarHost = "avatar.profile.csdn.net";

    function Avatar1(userName) {
        
    return GetAvatarUrl(AvatarHost, userName, 1false);
    }

    function Avatar2(userName) {
        
    return GetAvatarUrl(AvatarHost, userName, 2false);
    }

    function Avatar3(userName) {
        
    return GetAvatarUrl(AvatarHost, userName, 3false);
    }

    function Avatar4(userName) {
        
    return GetAvatarUrl(AvatarHost, userName, 4false);
    }

    function AvatarICO(userName) {
        
    return GetAvatarUrl(AvatarHost, userName, 1true);
    }

    function GetAvatarUrl(userName, type, getIcon) {
        
    return GetAvatarUrl(AvatarHost, userName, type, getIcon);
    }

    function GetAvatarUrl(host, userName, type, getIcon) {
        
    var url = "http://";
        
    //添加域名
        url += host;
        
    //添加MD5计算的路径
        url += MakeAvatarPath(userName);
        
    //计算图片大小
        if (getIcon == true) {
            url 
    += "_";
        }
        
    else {
            url 
    += type + "_";
        }
        
    //添加用户名
        url += userName;
        
    //添加图片类型
        if (getIcon == true) {
            url 
    += ".ico";
        }
        
    else {
            url 
    += ".jpg";
        }

        
    return url;
    }
    function MakeAvatarPath(userName) {
        
    var hash = hex_md5(userName.toLowerCase()); //转成小写,并计算MD5值
        var hashArray = hash.split(""); //把字符串转为字符数组

        
    var x = "/" + hashArray[0+ "/" + hashArray[1+ "/" + hashArray[2+ "/";
        
    return x
    }

    调用过程也很简单,这就不多说了,看一下下面的调用例子:

    Code

  • 相关阅读:
    Wix打包系列(一)如何使用wix制作安装程序
    服务器修改 ssh 22端口
    服务器遭受 ssh 攻击
    angularJS 系列(六)---$emit(), $on(), $broadcast()的使用
    angularJS 系列(五)--controller AS 语法
    模仿 BootstrapValidator 自制 模块化 表单验证
    formidable 模块化开发 代码拆分(解耦) nodejs图片服务器架构
    使用 原生js 制作插件 (javaScript音乐播放器)
    mui.fire() 和 mui.trigger()
    web 前端 常见操作 将时间戳转成日期格式 字符串截取 使用mui制作选项卡
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760198.html
Copyright © 2011-2022 走看看