• [公告] 如何申请华为云CDN免费测试
    华为云加速CDN如何免费申请?华为云CDN加速相信移动互联网企业都知道,华为云CDN也是享有业内知名度的云服务商。华为云携自身14年的CDN开发经验,30年的通信行业经验,向所有客户开放CDN加速服务,可根据实时监测结果为用户调整最佳访问路径。那么,华为云的CDN加速效果到底有多快速,华为云加速CDN免费测试如何申请?来跟随小编了解一下! 华为云加速内容分发网络CDN免费试用申请: 华为云CDN就近内容分发、智能调度,具有高可用性及高稳定性,依靠2800+ 全球节点,150Tbps+带宽能力,六大洲覆盖,主流运营商支持;为各类型业务保驾护航,提供高速、稳定的业务访问体验! 免费流量包个人/企业:100G流量包 免费体验有效期1个月 :点击申请体验面向大客户,华为云还提供了免费测试服务。华为云承诺根据客户的业务模型帮助评估最佳的接入方式及计算模型,输出质量和成本的最优平衡方案,协助客户将业务无缝切换到华为云CDN,并提供7*24小时全天候技术支持。 华为云CDN加速效果的保障有哪些? 1、华为云CDN加速节点资源丰富,覆盖130多个国家/地区,支持运营商网络超过1600家。保证将用户请求精准调度至最优边缘节点,提供有效且稳定的加速效果。 2、简单易用,接入方式简单快速,提供自助化域名管理; 并且支持多种可定制配置项,方便客户进行统计分析、日志管理、自定义缓存策略。 3、为您提供了更加优惠的闲时流量包和混合流量包,综合成本更低。支持按峰值带宽计费、按预付费流量包计费、按需付费用多少计多少、全站加速计费;如果您的消费额度满足:CDN月消费金额大于10万或预期超过10万的用户,您可以联系华为云大客户经理进行商务洽谈及开通业务:月结95峰值带宽计费或日峰值月平均计费。更有免费测试CDN供您体验。 
  • [交流吐槽] 这个活动还有吗? CDN有奖调研活动,2000码豆任你拿
     CDN有奖调研活动,2000码豆任你拿这个活动还有吗?为啥我提交好几次都没有豆。https://bbs.huaweicloud.com/forum/thread-147775-1-1.html
  • [全民体验官] 配置华为云CDN加速,提高网站访问速度
    配置华为云CDN加速,提高网站访问速度最近在登陆公司网站推广后台后时,发现优化建议里面有一条这样的提示:网站打开速度慢,达到8秒。试想一下有多少网民愿意等待这8秒呢,没耐心的都直接关闭你的网站,细细想来这个流失率不小啊!于是我就按照提示用那个网站速度诊断工具测试一下,网通和电信都显示得分只有52分!然后我就想到了使用华为云CDN加速来提高一下我们网站的打开相应速度,因为以前在群里看到有人提到过这个东西,说是能提高网站的加载速度。而且还不止这些好处呢!下面我就以自己实际操作的步骤来给大家看看,一个网站如何加入华为云CDN加速,实现网站加速自由。1.首先进入华为云官网登录你的华为云账号(已完成实名认证),开通CDN服务2.添加CDN加速域名,进入我的控制台进行相关设置:在左侧导航栏选择“域名管理”,进入域名管理页面;在域名管理界面,单击“添加域名”,在弹出的对话框中配置域名参数;单击“确定”,完成配置。配置大概需要5-10分钟,当“状态”为“已开启”时,表示域名添加成功;确认回源HOST是否需要修改,若需要,请参考回源HOST配置完成配置3.配置CNAME,我们的域名是在华为云,所以配置步骤如下:登录云解析服务控制台;在左侧菜单栏中,选择“域名解析 > 公网解析”,进入公网域名列表页面;在待添加记录集的域名所在行,单击“域名”列的域名名称;单击“添加记录集”,进入“添加记录集”页面;根据界面提示填写参数配置;单击“确定”,完成添加4.最后验证CNAME是否生效:打开Windows系统中的cmd程序,输入指令“nslookup -qt=cname 加速域名”,如果回显CNAME,则表示CNAME配置已经生效;是不是挺容易的呢?设置好以后也可以看网站数据,看什么节点啊这些。别说在我们接入华为云CDN之后,还真发现网站打开速度快了。如果你的网站也有这些情况:打开速度慢,用户体验差,跳出率高,那不妨来使用华为云CDN加速试试吧!
  • [技术交流] 请问未来有计划开设免费CDN吗?
    请问未来有计划开设免费CDN吗?目前的CDN服务价格确实有点小贵。如果使用其他的CDN的话还得将DNS服务器修改为其他CDN提供商的DNS地址,并且以后创建解析只能在他们那边创建。这样的话感觉有些太麻烦了。
  • [技术干货] FunctionGraph实现 CDN日志转存OBS_demo-python版本
    # 1.服务说明FunctionGraph服务:基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。# 2.方案说明## 2.1 需求及痛点需求:实现CDN日志实时转存到OBS痛点:当前CDN日志模块不支持转储能力,需要客户代码实现该能力## 2.2 方案设计!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/190656nmqzbbpz40kig5nh.png)**方案说明:**- 定时触发器,固定频率启动函数- 函数请求CDN日志接口,获取日志下载链接- 函数请求下载链接,将下载的日志上传到OBS固定目录下。## 2.3 服务创建### 2.3.1 确认CDN日志记录状态- 在华为云控制台查看CDN日志记录是否正常,如图可知日志会有5个小时的延迟。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/190856zdcjtkqyewrsooic.png)### 2.3.2 FunctionGraph新建函数- 登录华为云控制台,进入“管理与部署>统一身份认证服务”,选择“委托”页签,点击创建“委托”。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/1910153nhdrqvk74q82hb6.png)- 下一步,进入委托配置权限界面。作用范围:全局服务;权限选择:OBS OperateAccess 、CDN LogsReadOnlyAccess。点击确认!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191040k87llhvgseqdu1nq.png)- 华为云控制台,选择“计算>函数工作流”,进入函数工作流界面,点击右上角“创建函数”,输入图片中的信息,点击创建函数!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191149gbn7qkrqhwpjo0n2.png)- 创建后,进入代码编辑界面,将 Demo代码 的代码内容复制到在线IDE!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191259oqvkcaat58youzoz.png)- 点击配置按钮,配置“环境变量”!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191323qvv1ehjiw76dxrtq.png)**注:**url :https://cdn.myhuaweicloud.com/v1.0/cdn/logs(CDN日志查询的url)。domain_name :xxx.com(需要转存日志的CDN加速域名)。obsAddress :xxx.com(用于存日志的OBS桶域名)。destBucket :******(用于存日志的OBS桶文件夹名称)。- 在函数配置界面选择“触发器”,点击右侧“创建触发器”,配置内容如下,点击确定。(实例代码中日志转储的日志为最新生成的近一小时日志)!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191415icec47stds0swpz1.png)- 在函数配置界面,单击右上角“请选择测试事件”下拉框,选择“配置测试事件”,配置内容如下,点击保存即可。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191451yyfy3yoellu8yno6.png)- 在函数配置界面,单击右上角“请选择测试事件”下拉框,选择“配置测试事件”,配置内容如下,点击保存即可。!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/191514h51v3b1wmoyhfcx0.png)- 点击函数的保存按钮即可,函数配置成功。# 3.FunctionGraph适用说明该FunctionGraph函数工作流适用于CDN日志转储OBS,转储规则为增量转储,可通过配置触发器以及修改代码实现定时增量转储固定周期的CDN日志。# 4.Demo代码```python# -*- coding:utf-8 -*-import requestsimport datetimeimport timeimport osimport sysimport jsonfrom com.obs.client.obs_client import ObsClientfrom urllib.parse import urlparseif sys.version_info.major == 2 or not sys.version > '3': import httplibelse: import http.client as httplibcurrent_file_path = os.path.dirname(os.path.realpath(__file__))sys.path.append(current_file_path)TEMP_ROOT_PATH = "/tmp/" # OBS文件下载后的存储路径region = 'china' # 默认值,用于FunctionGraph连接OBS使用secure = True # 默认值,用于FunctionGraph连接OBS使用signature = 'v4' # 默认值,用于FunctionGraph连接OBS使用port = 443 # 默认值,用于FunctionGraph连接OBS使用path_style = True # 默认值,用于FunctionGraph连接OBS使用def handler(event, context): #引用context的logger方法 logger = context.getLogger() #CDN日志记录查询接口的起始时间,转换成时间戳;当前为近6个小时的日志记录 timer = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStamp = int(time.mktime(time.strptime(timer,"%Y-%m-%d %H"))*1000) #配置日志转储的起始时间点,转换成时间戳 timeStr = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStrStamp = int(time.mktime(time.strptime(timeStr,"%Y-%m-%d %H"))*1000) #配置日志转储的终止时间点,转换成时间戳 timeEnd = (datetime.datetime.now()-datetime.timedelta(hours=5)).strftime("%Y-%m-%d %H") timeSEndStamp= int(time.mktime(time.strptime(timeEnd,"%Y-%m-%d %H"))*1000) #CDN日志记录查询接口参数字段,显示数量为 pageSize* pageNumber pageSize = 5000 pageNumber = 1 #https请求加上verify=False忽略SSL验证后会出现警告,使用以下代码忽略警告 requests.packages.urllib3.disable_warnings() #queryDate 日志的产日日期,用于日志存储路径使用 queryDate = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d") #使用start函数 start(context, queryDate, timeStamp, pageSize, pageNumber,timeStrStamp,timeSEndStamp)#定义start函数,进行日志记录查询def start(context, queryDate, timeStamp, pageSize, pageNumber,timeStrStamp,timeSEndStamp): #引用context的logger方法 logger = context.getLogger() #引用context的中用户参数(新建函数后配置的参数),引用url,domain_name logUrl = context.getUserData('url') domainName = context.getUserData('domain_name') #request的请求参数 params = {'query_date': timeStamp, 'domain_name': domainName, 'page_size': pageSize, 'page_number': pageNumber, 'enterprise_project_id':'ALL'} #request的请求头 headers = {'Content-Type': 'application/json;charset=UTF-8', 'X-Auth-Token': context.getToken()} #发起日志记录接口的请求, res = requests.get(logUrl, params=params, headers=headers, verify=False) # 请求状态码判断,若非200,打印响应信息 if res.status_code != 200: logger.info("query log urls: " + res.url + ", error: " + res.text) return ("query log urls: " + res.url + ", error: " + res.text) #创建res.text的python对象 resJson = json.loads(res.text) #打印res.text的内容 logger.info(res.text) #将响应信息中的total的值赋予total total = resJson['total'] #定义变量i ,用于循环计数 i = 0 #从resjson logs值中循环取值 for val in resJson['logs']: i += 1 #打印 val中的link的值 logger.info(val["link"]) #val中的start_time的值赋予start_time start_time = val["start_time"] #取时间段内日志记录 if int(start_time) >= timeStrStamp and int(start_time) < timeSEndStamp: # link分为6个部分,协议、位置、路径、参数、查询、片段。 url = urlparse(val["link"]) # 将url 中的请求地址根据“:”进行分片 netlocs = url.netloc.split(":") # 创建连接 conn = httplib.HTTPConnection(netlocs[0], int(netlocs[1])) conn.request('GET', url.path + "?" + url.query) # CDN日志,OBS的存储路径 objName = os.path.join(val["domain_name"], queryDate, val["name"]) #使用 put_content_to_obs函数 put_content_to_obs(context, objName, conn.getresponse()) else: continue # 判断转储的日志量与total对比;不满足则重新执行start函数 if i > total: start(context, queryDate, timeStamp, pageSize, pageNumber + 1,timeStrStamp,timeSEndStamp)#定义put_content_to_obs函数,上传日志到OBSdef put_content_to_obs(context, objName, content): #引用context中的方法获取ak,sk ak = context.getAccessKey() sk = context.getSecretKey() #引用context中的用户定义变量obsAddress,destBucket obsAddress = context.getUserData('obsAddress') destBucket = context.getUserData('destBucket') #创建OBS上传实例 TestObs = ObsClient(access_key_id=ak, secret_access_key=sk, is_secure=secure, server=obsAddress, signature=signature, path_style=path_style, region=region, ssl_verify=False, port=port, max_retry_count=5, timeout=20) #上传日志 resp = TestObs.putContent(destBucket, objName, content=content) #判断执行结果 if resp.status < 300: print('requestId:', resp.requestId) else: print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage)```# 5.Demo代码说明## 5.1 注释说明```python#CDN日志记录查询接口的起始时间,转换成时间戳;当前为近6个小时的日志记录 timer = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStamp = int(time.mktime(time.strptime(timer,"%Y-%m-%d %H"))*1000) #配置日志转储的起始时间点,转换成时间戳 timeStr = (datetime.datetime.now()-datetime.timedelta(hours=6)).strftime("%Y-%m-%d %H") timeStrStamp = int(time.mktime(time.strptime(timeStr,"%Y-%m-%d %H"))*1000) #配置日志转储的终止时间点,转换成时间戳 timeEnd = (datetime.datetime.now()-datetime.timedelta(hours=5)).strftime("%Y-%m-%d %H") timeSEndStamp= int(time.mktime(time.strptime(timeEnd,"%Y-%m-%d %H"))*1000)```**示例说明:**假设代码执行时间为 2021-12-30 20:30日志记录查询接口的查询时间为 timestamp=2021-12-30 14:00 至 2021-12-30 20:30由于CDN的日志生成时间延迟6小时,则 2021-12-30 14:00 至 2021-12-30 20:30 的时间内只有2021-12-30 14:00 的日志文件生成。由于设置触发器每小时触发一次,即可每小时上传一次最新生成的日志,实现增量上传。## 5.2 Context说明| 方法名 | 方法说明 ||:---|:---|| getRequestID() | 获取请求ID。 || getRemainingTimeInMilliSeconds () | 获取函数剩余运行时间。 || getAccessKey() | 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 || getSecretKey() | 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 || getUserData(string key) | 通过key获取用户通过环境变量传入的值。 || getFunctionName() | 获取函数名称。 || getRunningTimeInSeconds () | 获取函数超时时间。 || getVersion() | 获取函数的版本。 || getMemorySize() | 分配的内存。 || getCPUNumber() | 获取函数占用的CPU资源,单位为millicore(1 core=1000 millicores)。取值与MemorySize成比例,默认是128M内存占0.1个核(100 millicores),函数占用的CPU为基础CPU:200 millicores,再加上内存按比例占用的CPU,计算方法:内存/128 * 100 + 200。 || getProjectID() | 获取projectID。 || getPackage() | 获取函数组。 || getToken() | 获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。 || getLogger() | 获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。如调用info方法输出日志:logg = context.getLogger() logg.info("hello") |# 6.实测结果- FunctionGraph函数界面,点击测试按钮。查看执行结果以及转储到OBS中的日志。**a.FunctionGraph 函数界面**!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/193158yasrqum1u2ybm92z.png)**b.OBS界面查看日志**!(https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202201/04/193225v7gkfzyz942wdpfi.png)
  • [热门活动] 【华为云双十一CDN专场直播】CDN上云最佳途径,省心!省钱!更有超级大奖华为Mate pad等你来领!
    2021年11月9日看直播,抢爆款,抽好礼。边学边买,优惠享不停小编为大家准备了荣耀魔方蓝牙音箱、华为无线立式充电器、华为Mate pad只需要你来看直播填写问卷,就是这么简单!!!快邀请小伙伴一起来抽大奖吧~可通过下方链接或扫码二维码进入分会场提前预约直播https://activity.huaweicloud.com/cdn_video.html↓↓CDN分会场二维码大图↓↓
  • [技术交流] 为什么购买了流量包,还会扣除余额?
    请您确认是否存在以下情况:1. CDN计费方式未选择流量计费只有流量计费方式,才会从流量包扣除流量,您可以前往CDN控制台查看计费方式。2. 域名的业务类型为全站加速全站加速费用由基础费用(流量或峰值带宽)+全站加速会产生请求数(HTTP和HTTPS请求)计费组成,全站加速请求数产生的费用需从账户余额扣除。3. 域名服务范围为全球流量包分区域,中国大陆流量包仅能抵扣中国大陆节点产生的流量,无法抵扣中国大陆外节点产生的流量,反之亦然。如果您的账户余额不足,可能导致欠费而无法使用CDN加速服务,您可以参考如何设置余额预警阈值?设置余额预警,及时充值,避免业务受到影响。
  • [问题求助] 查询CDN预热,查询状态为预热失败
    【操作步骤&问题现象】1、调用CDN预热接口,调用成功,返回task_id2、根据task_id查询预热状态,但是显示预热状态失败。为什么会出现预热失败,怎么样才能预热成功
  • [问题求助] 查询CDN预热,查询状态为预热失败
    【功能模块】【操作步骤&问题现象】1、调用CDN预热接口,调用成功,返回task_id2、根据task_id查询预热状态,但是显示预热状态失败。为什么会出现预热失败,怎么样才能预热成功【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术交流] CDN的全时流量包和闲时流量包有什么区别?混合流量包有是什么
    三种流量包均可用于流量计费方式下的流量消耗抵扣。闲时流量包可用于北京时间00:00-18:00的流量消耗抵扣;全时流量包可用于所有时间段的流量消耗抵扣。同时购买闲时和全时流量情况下,闲时时段优先消耗闲时流量包,闲时时段外消耗全时流量包;全时、闲时流量包的扣减有系统自动切换,无需人工操作而混和流量是根据客户业务场景设计的活动产品,根据一定配比将闲时、全时流量包组合在一起打包销售,简化您的购买操作
  • [技术交流] CDN是否可以对网站的Post请求进行加速?
    Post请求属于动态交互请求,在网站加速、文件下载加速和点播加速下没有加速效果。如果您的网站含有较多动态内容,可以配置全站加速。全站加速融合了动态和静态加速,用户请求资源时,静态内容从边缘节点就近获取,动态内容通过动态加速技术智能选择较优路由回源获取。
  • [技术交流] 业务集中在一个城市,是否有必要使用CDN?
    业务的访问集中在一个城市也可以使用CDN进行加速,CDN存在不同的线路,不同的运营商都存在CDN缓存节点,可以将源站的静态资源缓存在CDN节点上,减轻源站压力,提高用户体验。
  • [技术交流] CDN域名加速范围对源站服务器位置、备案是否有要求?
    CDN加速范围与源站服务器位置CDN域名的加速范围对源站服务器所在位置没有特殊要求。CDN加速范围与备案关系域名是否需要备案与域名提供商地域、网站服务器所处地域无关,与您加速域名的CDN加速服务范围有关。只要您的加速服务范围包含中国大陆(中国大陆,全球),该域名必须在工信部备案才能接入CDN。如果CDN加速服务范围仅为中国大陆境外,则该域名不需要在工信部备案。
  • [技术交流] CDN加速范围仅选择中国大陆或中国大陆境外,未加速区域的用户访问时会怎样?
    如果只选择中国大陆加速,中国大陆境外用户访问时也会访问到中国大陆CDN节点,受跨境网络影响,加速效果不太明显,甚至无法访问。如果只选择中国大陆境外加速,中国大陆用户访问时也会访问到中国大陆境外CDN节点,受跨境网络影响,加速效果不太明显,甚至无法访问。因此,如果您的业务有来着全球的用户范围,建议添加加速域名时,选择全球加速范围,华为云CDN将为您就近分配加速节点,保障高速、稳定的服务体验
  • [技术交流] CDN缓存命中率低什么原因?怎么解决
    CDN缓存命中率低,会导致源站压力大,静态资源访问效率低。您可以针对导致CDN缓存命中率低的具体原因,选择对应的优化策略,来提高CDN的缓存命中率。1、合理设置缓存过期时间CDN加速的本质是缓存加速,把源站资源缓存在遍布全球的节点上,用户可以就近从边缘节点获取资源,从而达到加速的效果。您可以通过CDN控制台合理设置缓存过期时间来提高缓存命中率,建议如下:对于不经常更新的静态文件(如图片类型、应用下载类型等),建议您将缓存时间设置为1个月以上。对于频繁更新的静态文件(如JS、CSS等),您可以根据实际业务情况设置。对于动态文件(如PHP、JSP、ASP等),建议您将缓存时间设置为0,即不缓存     说明:如果源站设置了s-maxage=0、max-age=0、no-cache、no-store、private,CDN侧同时开启了“缓存遵循源站”功能(此功能默认关闭),CDN节点将无法缓存源站资源,导致频繁回源。2、开启过滤URL参数目前大多数的网页请求都携带URL参数信息,参数以“?”开始,如果参数没有包含重要信息(如版本信息等),是否携带该参数访问不会影响用户获得正确的资源,可以选择开启“忽略URL参数”功能,提高缓存命中率,提升分发效率配置示例:终端用户首次访问URL“http://www.example.com/1.txt?test1”时,CDN无缓存,回源请求资源;第二次访问“http://www.example.com/1.txt?test2”时,由于开通了“忽略URL参数”功能,所以“?”之后的参数不匹配,直接命中缓存“http://www.example.com/1.txt”。终端用户首次访问URL“http://www.example.com/1.txt?test1”时,CDN无缓存,回源请求资源;第二次访问“http://www.example.com/1.txt?test2”时,由于没有开通“忽略URL参数”功能,所以“?”之后的参数也需要匹配,要重新回源请求“http://www.example.com/1.txt?test2”。3、预热URLCDN可以通过缓存预热将源站资源主动缓存到CDN节点,用户访问时就能直接从CDN节点获取到最新的资源。当您的域名初次接入CDN加速、活动发布时您可以将源站资源预热到CDN节点,用户访问资源时直接从CDN节点获取,从而提升CDN的缓存命中率。典型场景:初次接入CDN:域名初次接入CDN时,节点暂未缓存源站资源,此时,您可以将源站资源预热至CDN节点。后续用户访问资源将直接从就近的CDN节点获取资源,提升访问速度。安装包发布:新版本安装包或是升级包发布前,提前将资源预热至CDN节点。正式上线后,海量用户的下载请求将直接由全球加速节点响应,提升下载速度的同时,大幅度降低源站压力。运营活动:运营活动发布前,提前将活动页涉及到的静态资源预热至CDN节点。活动开始后,用户访问中所有静态资源均由加速节点响应,海量带宽储备保障用户服务可用性,提升用户体验。4、尽量避免目录刷新和URL携带动态参数缓存资源需要更新时,尽量避免刷新目录当源站某个资源更新时,一般需要通过刷新相应的URL来强制节点缓存资源过期。刷新目录会将目录内所有的资源全部置为过期,用户下次访问时将无法命中缓存,全部回源站请求资源,因此尽量避免刷新整个目录,尤其慎重刷新根目录。避免在URL中携带动态参数如果您的URL中包含动态参数,如时间戳,CDN无法缓存该资源,导致频繁回源。
总条数:151 到第
上滑加载中