教你使用腾讯云cdn加速网站静态资源
今天在给 onepoint 更换 js 库的 cdn 时突然想起来,腾讯云每个月还送我 10g 的 cdn 流量包。博客里面有时候会包含很多图片,正好可以把这闲置的资源用上了。
平台信息
bt(宝塔)、apache2、typecho
类型选择
cdn 可以选择全站加速,也可以选择只对指定的静态资源加速。全站加速是博客网站里面比较常见的一种方式,部署起来比较简单,但有时候这种方式不太灵活。静态资源加速是把静态资源放到一个单独的网站里面,然后主站使用该资源站的资源,二者相互分离,互不影响。
我个人只是想要加速访问这些图片时的速度,所以我选择了更具灵活性的静态资源加速。而静态资源加速,首先需要先为这些静态资源搭建一个网站,然后对这个网站全站套上 cdn,同时设置一个较长的缓存时间。
搭建静态站
我使用的是 typecho 博客系统,上传的图片文件都在网站的usr/
子目录下,所以我可以以这个文件夹为基础搭建一个静态网站。
我使用了 bt(宝塔),可以很方便的创建出该静态站。由于搭建的是静态站,所以也就不需要执行 php 了。
设置伪静态
搭建好网站后,我们就可以设置伪静态了。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^.*\.php$ ./404.html [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /404.html [F]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
</IfModule>
上面配置规则的大概意思就是禁止访问 php 文件,禁止除文件之外的其他请求,同时对于静态图片添加缓存控制时间(7天)。
注:如果你想直接改配置文件,请参考 apache2 官网文档。
为什么要设置伪静态呢?
通常伪静态只在动态网站中出现,但是我甚至不想让用户通过静态站访问我的 php 文件,即使是静态 php 文本文件也不行。所以就配置了伪静态。
添加证书
添加证书是为了能够使用 https。bt 面板可以一键签发证书,自己申请即可。注意记下密钥( KEY )和证书( PEM 格式)
检验
配置完成后可以自己试着直接访问静态网站,看看能否访问文件夹、php文件以及普通的图片资源。
添加部署 cdn
校验无误后,就可以配置cdn了。
首先需要在腾讯控制台开通 cdn 服务。新用户可连续 6 个月领取每月 50GB 的免费流量包,老用户每月免费 10GB 流量包。
https://console.cloud.tencent.com/cdn/package
添加域名
都按默认配置即可,需要注意的是源站设置填服务器的 ip 地址,加速业务类型选择静态加速。
域名解析
添加域名完成后,在基本配置选项里面可以看到一个 CNAME 选项,我们还需要把我们的域名 cname 解析到该网址才行。不知道如何做的请自行搜索 cname 解析。
配置证书
证书内容填写 bt 中记录的证书( PEM 格式),私钥内容填写 bt 中记录的密钥( KEY )。
另外,回源协议选择协议跟随(截图中没有)。
访问控制
这一步主要是防止被恶意 ddos 造成损失。
设置 ip 访问限制
在域名管理中,选择对应的域名,在访问控制选项卡可以找到该项。
一秒10次的访问限制基本够用了,如果觉得太少可以改大一点。
设置带宽封顶
每秒 100Mb 足够了,如果觉得太少可以改大一点。
如果想限制 https 访问,也可以在这里设置。
配置结束
至此,我们的 cdn 就配置完成了,可以感受下速度了。
上一篇: 工作中常用的 Yarn 解释 [V] 资源调度和隔离
下一篇: 04 - 资源规划 - 资源上限估算
推荐阅读
-
小红书大产品部架构 小红书产品概览--经过性能、稳定性、成本等多个维度的详细评估,小红书最终决定选择基于腾讯云星海自研硬件的SA2云服务器作为主力机型使用。结合其秒级的快速扩缩、超强兼容和平滑迁移能力,小红书在抵御上亿次用户访问、保证系统稳定运行的同时,也实现了成本的大幅降低。 星海SA2云服务器是基于腾讯云星海的首款自研服务器。腾讯云星海作为自研硬件品牌,通过创新的高兼容性架构、简洁可靠的自主设计,结合腾讯自身业务以及百万客户上云需求的特点,致力于为云计算时代提供安全、稳定、性能领先的基础架构产品和服务。如今,星海SA2云服务器也正在为越来越多的企业提供低成本、高效率、更安全的弹性计算服务。 以下是与小红书SRE总监陈敖翔的对话实录。 问:请您介绍一下小红书及其主要商业模式? 小红书是一个面向年轻人的生活方式平台,在这里,他们发现了向上、多元的真实世界。小红书日活超过 3500 万,月活跃用户超过 1 亿,日均笔记曝光量达 80 亿。小红书由社交平台和在线购物两大部分组成。与其他线上平台相比,小红书的内容基于真实的口碑分享,播种不止于线上,还为线下实体店赋能。 问:围绕业务发展,小红书的系统架构经历了怎样的变革和演进? 系统架构变化不大,影响最深的是资源开销。过去三年,资源开销大幅增加,同比增长约 10 倍。在此背景下,我们努力进行优化,包括很早就开始使用 K8S 进行资源调度。到 18 年年中,绝大多数服务已经完全实现了容器化。 问:目前小红书系统架构中的计算基础设施建设和布局是怎样的? 我们目前的建设方式可以简单描述为星型结构。腾讯云在上海的一个区是我们的计算中心,承载着我们的核心数据和在线业务。在外围,我们还有两个数据中心进行计算分流,同时承担灾备和线上业务双活的角色。 与其他新兴电子商务互联网公司类似,小红书的大部分计算能力主要用于线下数据分析、模型训练和在线推荐等平台。随着业务的发展,对算力的需求也在加速增长。
-
教你使用腾讯云cdn加速网站静态资源
-
腾讯视频直播 02-推流-美颜滤镜 同样,腾讯云提供了 setBeautyFilter 方法来设置美颜风格、磨皮程度、美白程度和泛红程度 //style 磨皮风格:0:平滑 1:自然 2:朦胧 //美容级别:0-9。值为 0 时关闭美颜效果。默认值:0,关闭美颜效果。 //美白级别:取值 0-9。值为 0 时,将关闭美白效果。默认值:0,关闭美白效果。 //ruddyLevel:取值范围为 0-9。值为 0 时关闭美白效果。默认值:0,关闭美白效果。 public boolean setBeautyFilter(int style, int beautyLevel, int whiteningLevel, int ruddyLevel);; public boolean setBeautyFilter(int style, int beautyLevel, int whiteningLevel, int ruddyLevel) 滤镜 setFilter 方法可以设置滤镜效果,滤镜本身是一个直方图文件。setSpecialRatio 方法可以设置滤镜的程度,从 0 到 1,越大滤镜效果越明显,默认值为 0.5。 Bitmap bitmap = BitmapUtils.decodeResource(getResources, R.drawable.langman); if (mLivePusher) if (mLivePusher ! = null) { mLivePusher.setFilter(bmp); } 控制摄像头 腾讯云 sdk 默认为前置摄像头(可以通过修改 TXLivePushConfig 的配置函数 setFrontCamera 来修改默认值),调用一次 switchCamera 就切换一次,注意切换摄像头前要确保 TXLivePushConfig 和 TXLivePusher 对象已经初始化。 mLivePushConfig.setFrontCamera(true); // 默认前置摄像头。 mLivePusher.switchCamera; //切换摄像头。 ⑦ 设置徽标水印 腾讯视频云目前支持两种设置水印的方式:一种是在流媒体 SDK 中设置水印,原理是在 SDK 中对视频进行编码前在画面中设置水印。另一种方式是在云端设置水印,即由云端解析视频并添加水印标识。 建议使用 SDK 添加水印,因为在云端添加水印会有问题。下面是添加水印的 SDK 介绍: //设置视频水印 mLivePushConfig.setWatermark(BitmapFactory.decodeResource(getResources,R.drawable.watermark), 10, 10); // 最后两个参数是视频的水印。 //最后两个参数是水印位置的 X 轴和 Y 轴坐标。 mLivePusher.setConfig(mLivePushConfig); 如果需要对水印图像的位置进行模型适配,则需要调用水印规范化接口。 /设置视频水印 mLivePushConfig.setWatermark(mBitmap, 0.02f, 0.05f, 0.2f); //参数为水印图像。 //参数包括水印图像的位图、水印位置的 X 轴坐标、水印位置的 Y 轴坐标和水印宽度。后三个参数的范围是 [0,1]。 // 最后两个参数是水印位置的 X 轴坐标和 Y 轴坐标。 mLivePusher.setConfig(mLivePushConfig); TXLivePushConfig 中的 setHardwareAcceleration 方法可以启用或禁用硬件编码。 if (mHWVideoEncode){ if (mLivePushConfig ! = null) { if (Build.VERSION.SDK_INT < 18){ Toast.makeText(getApplicationContext, "Hardware acceleration failed, current phone API level is too low (min 18)"、 Toast.LENGTH_SHORT).show; mHWVideoEncode = false; } } } } mLivePushConfig.setHardwareAcceleration(mHWVideoEncode ? TXLiveConstants.ENCODE_VIDEO_HARDWARE : TXLiveConstants.ENCODE_VIDEO_SOFTWARE); mLivePusher.setConfig(mLivePushConfig); // 如果您不确定何时启用硬件加速,建议将其设置为 ENCODE_VIDEO_AUTO。 // 默认情况下启用软件编码,但如果手机的 CPU 使用率超过 80% 或帧速率为 10,SDK 将自动切换到硬件编码。 ⑨ 后台推流 在常规模式下,一旦应用程序进入后台,摄像头捕捉数据的能力就会被 Android 禁用,这意味着 SDK 无法继续捕捉和编码音频和视频数据。如果我们什么都不做,故事就会按照下面的脚本发展: 阶段 1(背景剪切后 10 秒 ->)- CDN 无法将视频流传输给观众,因为没有数据,观众看到的是主帧。 阶段 2(10 秒-> 70 秒)--观众一方的播放器因无法接收到直播流而退出,房间里空无一人。 第 3 阶段(70 秒后)--服务器直接断开了推送流媒体的 RTMP 链接,主播需要重新打开直播才能继续。 主播可能只是短暂地接了一个紧急电话,但各云提供商的安全措施会迫使主播的直播提前结束。 1) 设置 setPauseFlag 在开始推流之前,使用 TXLivePushConfig 的 setPauseImg 接口设置一个等待图像,其含义建议为 "主播将暂时离开,稍后再回来"。