zoukankan      html  css  js  c++  java
  • Go语言实战

    由于用户纷纷反应山坡网的打开速度比较慢,所以两天前我们决定把服务器从linode迁移到阿里云。

    整个迁移过程非常平滑,基本上一个小时就完成了。而且阿里云的配套设施提供的也很不错,运行状态监控什么的都有。在此向大家推荐阿里云!

    话说由于我们资金有限,就选择了ECS服务器中最低档的一款,512MB内存,2MB带宽。而山坡网上会有很多书籍封面图片,这导致了页面打开的速度并没有想象中提高的多,用户反应速度虽有提升,但不明显。

    此时我想到了七牛云存储,虽说知道它已经几个月了,但始终没有正式开始用,总觉得我们挺穷的,云存储这类高端大气上档次的东西一时半会儿估计用不上。但还是抱着学习一下的心思打开它看了看。这一看我就乐疯了。

    image

    这……不敢相信啊!二话不说,立马决定把所有书籍封面图片都迁移到云端!

    接着打开七牛的API文档看了一下,嗯,简单明了。10分钟后就照着动手了。

    七牛的Go SDK提供了两种上传策略,上传内存数据或者上传文件。本来最佳的方式应该是直接上传内存数据,但考虑到服务器内存比较小,所以我选择了性能上次之的文件上传方式。

    思路定下来之后就简单了,在文件下载完成之后,上传到云端,返回key值作为书籍封面的url保存到数据库。上传的函数如下:

    //将本地文件上传到七牛云存储,返回key。
    func UploadToQiniu(filepath string) (string, error) {
      bucket := "xxxxxxx"

      //获取uptoken
      putPolicy := rs.PutPolicy{Scope: bucket}
      uptoken := putPolicy.Token(nil)

      //上传
      var ret qnio.PutRet
      err := qnio.PutFileWithoutKey(nil, &ret, uptoken, filepath, nil)

      return ret.Key, err
    }

    接着就可以用“http://xxxxxx.qiniu.com/<key>”的方式访问图片资源了。

    有经验的人此时应该想到一个问题,防盗链。对啊,就算每个月有100万次免费的GET请求,可以顶不住盗链哪!

    七牛早就想到了,很简单,把存储空间设置成为私有的,然后使用如下函数生成访问链接。

    //处理成访问七牛云存储私有空间的url
    domain := "xxxx.qiniudn.com"
    baseUrl := rs.MakeBaseUrl(domain, urlStr)
    policy := rs.GetPolicy{}

    return policy.MakeRequest(baseUrl, nil)

    这样就会在访问的url后面加上一个有时间限制的token。防盗链完成!

    再接下来就处理一下历史数据,写个小程序把所有现有的书籍封面都上传到云端,同时更新数据库。

    半小时之内,山坡网就搭上了云存储的快车,我和我的小伙伴们都惊呆了!

    我这只是用了七牛提供的众多功能中最简单的,其实照这个思路,可以把站点上所有静态的资源都放到云端,仅让我们的服务器处理必要的动态内容。这样成本会大幅降低。

    在此,我向所有网站的开发和运营者们推荐七牛云存储!靠谱!

  • 相关阅读:
    jQuery邮箱验证
    查看图片前进后退效果
    jQuery实现全选与反选
    jQuery在p前后添加节点
    jQuery中的fadeIn、fadeOut、fadeTo的应用
    jQuery中图片隐藏效果的所有方法
    jQuery中animate的应用(图片自动移动)
    jQuery图片复制
    N!具体数值有多少位数字
    顺序队列的初始化,建立,插入,查找,删除。
  • 原文地址:https://www.cnblogs.com/AllenDang/p/3274859.html
Copyright © 2011-2022 走看看