压缩和优化
IBM Cloud® Internet Services 对各种内容类型使用 GZIP 和 Brotli 压缩,以提高页面加载时间。 压缩是根据浏览器的 User-Agent
应用的。
如果您已经在使用 CIS,只要在服务器响应中传递了适当的标头,它就会接受您的设置。
CIS 只支持与您的源服务器进行通信,并能提供源服务器上的内容:
- 压缩使用或 Brotli
- 未压缩
CIS 的反向代理可以在压缩和非压缩格式之间进行转换。 例如,它可以从您的源获取 GZIP 压缩内容,并以未压缩的方式提供给客户端。 这一过程与缓存无关。
CIS 会移除 标头,并且不执行它。Accept-Encoding
压缩内容类型
除了提供陈旧内容和对 CSS、JS 和 HTML 进行最小化之外,CIS 还会使用 GZIP 或 Brotli 压缩响应,以兼容浏览器。 CIS 就以下内容类型向兼容的客户端和浏览器返回 GZIP 或 Brotli 编码的响应:
text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/xml+rss
application/vnd.api+json
application/x-protobuf
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast
application/manifest+json
application/ld+json
如果不想对来自源的特定响应进行编码,可以设置 cache-control: no-transform,禁用源网络服务器上的编码。
启用 Brotli 压缩
- 登录 CIS 账户。
- 选择相应的域。
- 单击“性能”选项卡。
- 单击“高级”选项卡。
- 将 Brotli 开关切换到
On
。
HTML、JavaScript, 和 CSS 的最小化
CIS 使用 Minify 网页内容可删除 HTML、和 CSS 文件中所有不必要的字符,而不影响其功能。JavaScript
- CSS 和 JavaScript 压缩仅对高速缓存的 CSS 和 JS 文件进行操作。
- CIS 在返回文件的缓存 HIT 后,会以最小化的形式返回给浏览器,这样 CIS 就能提供完整的最小化结果。
- 要应用最小化更改,请清除 CIS 缓存。
图像大小优化压缩
CIS 通过剥离元数据和应用有损或无损压缩来优化其边缘网络中缓存的图像,从而加快传输速度。 未优化站外图片。
图像大小优化压缩只能作为页面规则在控制台中使用。 域级别设置在 CLI 中可用。
图像大小优化压缩选项
以下部分详细描述了图像大小优化压缩选项。
无损
- 删除大部分元数据(例如 EXIF 数据)。
- 保留所有视觉细节。
- 解压缩输出与原始图像一致。
有损
- 剥离元数据并将图像大小缩小约 15%。
- 一些原始数据会永久丢失。
- 对于 PNG,结果实际上与无损相同。
无损和有损模式会尝试删除尽可能多的元数据,但由于缓存等因素,并不能保证完全删除。
WebP
- WebP 提供卓越的压缩性能:
- 比 PNG(无损)小约 26
- 比 JPEG(有损压缩)小 25-34
- CIS 创建并缓存 版本。WebP
- WebP 只有当
- 浏览器的
Accept
标头包括 WebP。 - 压缩后的图像明显小于有损或无损版本。
- 浏览器的
支持 Accept
标头示例:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
目前,仅在 Firefox,Google Chrome和 Opera 浏览器中支持 WebP。
禁用 WebP,以避免不支持 WebP 的浏览器出现缓存问题。
验证图像尺寸优化是否激活
CIS 会为优化后的图像添加以下标题:
cf-bgj: imgq:85
cf-polished: qual=85, origFmt=jpeg, origSize=95005
cf-cache-status: HIT
cf-bgj
标头确认 CIS 应用了图像尺寸优化,并返回图像质量设置 (imgq
)。cf-polished
标头表示图像大小优化状态,并返回图像质量设置 (qual
) 和原始大小 (origSize
)。cf-cache-status
确认图像已缓存,可以应用图像大小优化。
WebP 转换不会改变图像。URL Content-Type HTTP
头告诉浏览器图像的原始格式。
通用 cf-磨光状态
下表列出了常见的 Cf-Polished 状态和故障排除方法。 如果未返回 Cf-Polished 头,请尝试使用单文件高速缓存清除来清除映像。
状态 | 定义 | 建议 |
---|---|---|
input_too_large |
图像太大或太复杂,无法处理,需要较低分辨率。 | 使用小于 1 000 px 和 10 MB 的 PNG 或 JPEG 图像。 |
not_compressed 或 not_needed | 图像在原始服务器上进行了全面优化,没有进行压缩。 | |
webp_bigger |
波兰尝试将图像转换为 WebP, 但图像已在原始服务器上进行了优化,并且/或者是以低质量设置创建的。 | 由于 WebP 版本不存在,因此将状态设置为响应的 PNG 或 JPEG 版本。 |
cannot_optimize 或 internal_error |
原始服务器上的图像已损坏或不完整。 | 将新版本的映像上载到源服务器。 |
format_not_supported |
不支持图像格式(例如 BMP、TIFF)和/或原始服务器使用了与波兰语不兼容的额外优化软件。 | 尝试将输入图像转换为与 Web 兼容的格式 (例如,PNG 和 JPEG) 和/或在源服务器上禁用任何额外的优化软件。 |
vary_header_present |
源网络服务器发送的 Vary 标头的值不是 accept-encoding 。 |
如果原点网络服务器正试图支持 WebP,,请禁用原点网络服务器上的 WebP 并让 Polish 执行 WebP 转换。 |
当 accept-encoding
不是 Vary
标头中的唯一值时,优化仍然有效。