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进行封装一下就可以了。

  1. /*JS获取用户头像真实URL*/
  2. var AvatarHost = "avatar.profile.csdn.net";
  3. function Avatar1(userName) {
  4.     return GetAvatarUrl(AvatarHost, userName, 1, false);
  5. }
  6. function Avatar2(userName) {
  7.     return GetAvatarUrl(AvatarHost, userName, 2, false);
  8. }
  9. function Avatar3(userName) {
  10.     return GetAvatarUrl(AvatarHost, userName, 3, false);
  11. }
  12. function Avatar4(userName) {
  13.     return GetAvatarUrl(AvatarHost, userName, 4, false);
  14. }
  15. function AvatarICO(userName) {
  16.     return GetAvatarUrl(AvatarHost, userName, 1, true);
  17. }
  18. function GetAvatarUrl(userName, type, getIcon) {
  19.     return GetAvatarUrl(AvatarHost, userName, type, getIcon);
  20. }
  21. function GetAvatarUrl(host, userName, type, getIcon) {
  22.     var url = "http://";
  23.     //添加域名
  24.     url += host;
  25.     //添加MD5计算的路径
  26.     url += MakeAvatarPath(userName);
  27.     //计算图片大小
  28.     if (getIcon == true) {
  29.         url += "_";
  30.     }
  31.     else {
  32.         url += type + "_";
  33.     }
  34.     //添加用户名
  35.     url += userName;
  36.     //添加图片类型
  37.     if (getIcon == true) {
  38.         url += ".ico";
  39.     }
  40.     else {
  41.         url += ".jpg";
  42.     }
  43.     return url;
  44. }
  45. function MakeAvatarPath(userName) {
  46.     var hash = hex_md5(userName.toLowerCase()); //转成小写,并计算MD5值
  47.     var hashArray = hash.split(""); //把字符串转为字符数组
  48.     var x = "/" + hashArray[0] + "/" + hashArray[1] + "/" + hashArray[2] + "/";
  49.     return x
  50. }

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

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" >
  3. <head>
  4.     <title>JS的MD5</title>
  5.     <script type="text/javascript" src="js/md5.js"></script>
  6.     <script type="text/javascript" src="js/AvatarUrls.js"></script>
  7.     <script type="text/javascript">
  8.         //AvatarHost = "avatar2.profile.csdn.net";
  9.         function Button1_onclick() {
  10.             AvatarHost = document.getElementById("txtHost").value;
  11.             var txtUserName = document.getElementById("txtUserName");
  12.             var userName = txtUserName.value;
  13.             document.getElementById('avatar1').innerHTML = Avatar1(userName);
  14.             document.getElementById('avatar1Img').src = Avatar1(userName);
  15.             document.getElementById('avatar2').innerHTML = Avatar2(userName);
  16.             document.getElementById('avatar2Img').src = Avatar2(userName);
  17.             document.getElementById('avatar3').innerHTML = Avatar3(userName);
  18.             document.getElementById('avatar3Img').src = Avatar3(userName);
  19.             document.getElementById('avatar4').innerHTML = Avatar4(userName);
  20.             document.getElementById('avatar4Img').src = Avatar4(userName);
  21.             document.getElementById('avatarICO').innerHTML = AvatarICO(userName);
  22.             document.getElementById('avatarICOImg').src = AvatarICO(userName);
  23.         }
  24.         
  25.     </script>
  26. </head>
  27. <body>
  28.     Host: <input id="txtHost" type="text" value="avatar.profile.csdn.net" />
  29.     UserName: <input id="txtUserName" type="text" value="billok" />
  30.     <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
  31.     <p>
  32.         <img id="avatar1Img" src="" alt="" />
  33.         <span id="avatar1"></span>
  34.     </p>
  35.     <p>        
  36.         <img id="avatar2Img" src="" alt="" />
  37.         <span id="avatar2"></span>
  38.     </p>
  39.     <p>
  40.          <img id="avatar3Img" src="" alt="" />
  41.         <span id="avatar3"></span>
  42.     </p>
  43.     <p>
  44.         <img id="avatar4Img" src="" alt="" />
  45.         <span id="avatar4"></span>
  46.     </p>
  47.     <p>
  48.          <img id="avatarICOImg" src="" alt="" />
  49.         <span id="avatarICO"></span>
  50.     </p>
  51. </body>
  52. </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值