阿里云近期也推出了边缘安全加速ESA免费版,现可免费领取,与腾讯EdgeOne形成直接竞争。这对于广大站长而言无疑是好消息——市场竞争越充分,用户越能享受到更优质的服务。
我之前曾尝试过腾讯EdgeOne,但实际体验并不理想,后来便停用了。现在选择阿里云ESA,一方面是因为它承诺的几大亮点:
真·无限流量:无惧突发访问,无流量限制
安全内置:基础防护默认开启,无需额外配置
无隐藏条款:永久免费,无试用倒计时,更无自动扣费风险
另一方面,我的服务器本就托管在阿里云,估计在兼容性和调度上会更顺畅一些。
接入并配置ESA
配置过程非常简单,与EdgeOne类似:点击新增站点,输入你的域名,然后按照引导完成后续步骤。验证域名后,若已备案可选择中国大陆或全球加速,再通过CNAME或NS接入即可。
配置边缘证书
申请SSL证书时遇到了小插曲:起初尝试泛域名多次失败,后来换成单域名才成功。虽然官方说明支持泛域名,实际却未通过,这一点稍显不便。不过最终成功部署了SSL证书,完成了最基础的加速配置。
缓存规则的配置
完成基础接入后,缓存规则的配置是决定加速效果的关键。相比EdgeOne为WordPress提供了现成模板,ESA则需要在“规则-缓存规则”中手动配置。
免费版限制为5条规则,每条自定义规则内最多可添加3个条件。我根据最佳实践,配置了以下5条规则(其中规则1和5启用缓存,规则2、3、4不缓存),实测效果良好。
1、静态资源全缓存
表达式生成预览:
(http.request.uri.path.extension in {"jpg" "webp" "js" "css" "png" "jpeg" "gif" "svg" "ico"})
2、动态请求不缓存
表达式生成预览:
(http.request.uri.path.extension in {"php"})
php格式的文件不缓存,您也可以根据需要增加jsp、asp、aspx等格式。
3、登录用户不缓存
表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and http.cookie contains "wordpress_logged_in")
判断登录用户cookie含有“wordpress_logged_in”,不缓存。
4、评论用户不缓存
表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and http.cookie contains "comment_author")
用户发表评论后,若cookie记录评论者信息“comment_author”,则不缓存。
5、未登录用户缓存
表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and not http.cookie contains "wordpress_logged_in")
最后兜底,对所有不满足上述“不缓存”条件的请求(即未登录访客的访问)进行缓存。
缓存清理
博客还有重要的一环就是发表评论,如果缓存已经生成,那么很可能其他人是看不到这个评论的,这个时候指定清理局部缓存就很有必要。
ESA已经提供了相关API:PurgeCaches - 刷新节点缓存。
我根据API已经实现的逻辑是:当一条评论 发表 / 审核通过 时,同步清除 首页、对应文章页、当前评论所在页面 的缓存,这样能保证用户看到的文章页面是最新的。
目前清理url每日额度上限1000次,手动和接口共用。想来一天也不会有那么多评论,所以基本是够用的。
其他关键配置
获取真实客户端IP
启用CDN后,用户评论显示的IP会变为CDN节点地址。为获取真实IP,在“规则-转换规则-托管转换”的 开启 “添加真实客户端IP标头”,使用默认标头名称 ali-real-client-ip。然后nginx中添加
# 注意:最好的做法是 set_real_ip_from 只允许阿里云的 IP 段
set_real_ip_from 0.0.0.0/0;
real_ip_header ali-real-client-ip;
real_ip_recursive on;
目前这样配置能获取真实的IP,但写法我觉得不够严谨,理想情况下应仅配置阿里云ESA的官方IP段。如果有懂的同学可以指导一下。
开启IPv6支持
在“速度和网络-优化-网络优化”中开启IPv6,可进一步提升访问兼容性。
效果验证
如何验证页面是否被缓存?可以通过浏览器开发者工具,检查 标头/响应头(Response Headers)中的 x-site-cache-status 标识,如果未登录访问应看到 HIT,登录用户看到 DYNAMIC,这表示缓存规则生效正常。
下面常见的几种标识含义
HIT:你的文件已经命中缓存。这表示用户获取文件的方式途径为从CF缓存服务器中获取而非你的源服务器,不消耗你的服务器资源
MISS:已经在缓存服务器中查找了你所请求的文件,但是并没有找到,缓存服务器将会回源至你的服务器中获取该文件,当下次请求时该文件就会显示HIT
BYPASS:已经被要求不缓存该文件,用户将直接从网站源服务器中获取文件,这个通常是因为请求的文件响应了NO-Cache header
EXPIRED:自上次缓存之后,文件的缓存期限已经过期,将会再度回源至网站源服务器进行获取文件,当下次请求时该文件就会显示HIT
DYNAMIC:默认不缓存文件,也没有对应的缓存配置,用户将从网站源服务器获取该文件
续费
值得一提的是,虽然免费套餐默认有效期为一年,但支持自动续期。用户也可主动操作,进入套餐管理页面,在续费中选择“设置续费规则”,弹出的页面选续费一年,支付 0 元。每次续费一年,重复操作,最长可续至2050年。
目前整体使用体验良好,测速结果全线飘绿,加速效果明显。期待阿里云ESA能稳定运行,不再出现此前使用EdgeOne时遇到的问题。


我一直在用eo,主要规则缓存有点不太会配置。不过感觉速度也还行。阿里云esa就看后续咋样。毕竟阿里的产品都有前车之鉴,例如;阿里云盘,永不限速。
@邹江开始吸引用户,口号都要喊一喊的。
不配置缓存规则其实也OK的,用他的安全防护也是挺好的。
我EO用的不好,ESA用的还不错,选个合适的就可以了。
我用eo倒是没遇到过问题,规则也和你差不多,有cookie和 /wp-admin/ /wp-json/ 路径就就不缓存,其他默认。
@手里有只毛毛虫ESA和EdgeOne哪个好用就用哪个,核心使用的功能也都差不多。
可以不用,但是不能没有
@闲鱼是这个道理。我之前EdgeOne没用起来,这次ESA用的挺好。
这个挺好,加速还有安全的防护,就是我不会设置,所以没用起来。
@大峰只要解析一下就行,可以不开启缓存,也是不错的。
期待已久的两个国内大厂终于跟上了,太感动了!说起这个我也想去看看 EO 有没有刷新缓存的 api,现在每次 cnb 部署后我还要手动去刷新
@w4j1eEO也是有接口的,这种没有接口纯靠手动那用起来就太麻烦了。
现在阿里和腾讯都开始卷边缘安全加速了,免费套餐普通站长正好可以用用。
@微笑是啊,都通过免费套餐来吸引用户。
威哥,我把你的规则1、2、3、4用上,5不用的话,是不是就是只缓存静态资源,未登录、登录用户和PHP动态都不缓存?
@公子扶苏5不用的话,那就只用配置1就行了,只缓存那些静态文件就行,其他的不缓存。
边缘安全加速,我有一个疑问,这些技术和之前的CDN有什么本质的区别吗?又或者效果方面有明显的提升吗?
@土木坛子CDN更多是加速分发,提升访问速度。
ESA包含CDN的功能,但更多是安全防护、个性化处理。ESA也可以不开启缓存,只用安全相关的功能。
所以两个侧重点会有一些不一样。
白嫖了,但是没用过这玩意,抽空研究安排看看
@若志奕鑫有时间可以用用看,我觉得还是挺好的。
网页速度非常快。
@似水流年收到,加速还是挺有用的。
速度还可以
@西风有你在国外测试,挺好