阿里云OSS直(zhí)传

最近的一个项目在上传图片的时候速度非常慢,现有的上传方案是:图片发送到服务器,有服务器往oss里面写。但是实际的效果非常糟糕,7兆的文件需要传输大约40秒,这个用户体验就非常差。既然是基于oss的存储,那么可以完全不用经过服务器,直接上传到oss。

Continue Reading

百度CDN加速阿里云OSS

之前也想过要给blog套一层cdn,不过通过cname方式介入的时候在he.net的dns解析那里遇到了问题,没有办法添加@的cname记录。直到前几天换了服务器发现dns解析依然停留在阿里云的时候发现应该可以试一下。于是重新开始了百度cdn的折腾,流程也比较简单,在 百度的后台设置a记录解析到服务器的原有ip地址。

百度云加速是百度旗下为网站提供一站式加速、安全防护和搜索引擎优化的产品。百度云加速正为数十万用户的近百万网站提供CDN、网络安全和SEO服务。每天处理十亿级的PV流量及数百亿TB的数据流量,并提供市场顶尖水平的稳定性和抗攻击能力。

Continue Reading

阿里云 OSS批量设置Cache-Control

阿里云的服务器带宽一向都是小水管,为了加快加载速度把大量的图片都上传到了oss上。本地文件通过litespeed设置缓存,但是oss上的文件却没有一个统一的入口设置浏览器缓存。如果通过后台设置,需要每个文件都要去处理。而插件也没看到设置浏览器Cache-Control的地方。不过好在阿里云提供了一个命令行工具ossutil64(能简单解决的,就没必要去写代码啦~~) 。

Continue Reading

阿里云oss 批量检测文件是否存在

虽然阿里云oss的sdk提供了检测文件是否存在,但是在批量处理的时候你就会发现检测一次需要联网一次,如果文件过多最后会提示你链接数超过限制,最终无法进行检测了。

下面是阿里云提供的示例代码:

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('', '')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '')

exist = bucket.object_exists('')
# 返回值为true表示文件存在,false表示文件不存在。
if exist:
	print('object exist')
else:
	print('object not eixst')

那么其实可以反过来想,直接拉文件目录落下来进行比较,列举文件的代码如下:

# -*- coding: utf-8 -*-

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('api-key', 'api-secret')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'https://oss-cn-beijing.aliyuncs.com', 'bucket-name')

file_arrary = []
# 设置Delimiter参数为正斜线(/)。
for obj in oss2.ObjectIterator(bucket, delimiter='/'):
    # 通过is_prefix方法判断obj是否为文件夹。s
    if obj.is_prefix():  # 文件夹
        #print('directory: ' + obj.key)
        for obj2 in oss2.ObjectIterator(bucket, prefix='%s' % obj.key):
            #print('file: ' + obj2.key)
            file_arrary.append(obj2.key)
    else:  # 文件
        file_arrary.append(obj.key)

如果要判断文件是否存在,只需要在数组中进行比较就可以了

file_arr = []
for file in file_arr:
    if file in file_arrary :
           print('esixts')
    else:
           print('not exists')