压缩和优化概念
IBM Cloud® Internet Services 将 gzip
和 brotli
压缩应用于某些类型的内容。CIS 还会根据浏览器的 UserAgent 压缩项以加快页面装入时间。
如果您已在使用 gzip
,那么 CIS 将接受 gzip
设置 (如果您正在传递来自 Web 服务器的文件的头中的详细信息)。
CIS 仅支持针对源服务器的内容类型 gzip
,并且只能交付使用 gzip
或 brotli
压缩或未压缩的内容。
CIS的逆向代理还能够在压缩格式和未压缩格式之间进行转换,这意味着它可以通过 gzip
从客户的源服务器中提取内容并将其提供给未压缩 (或反向) 的客户机。 此转换是独立于高速缓存完成的。
不遵守 Accept-Encoding 头并将其除去。
压缩的内容
除了 CIS提供旧内容和 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
如果您不希望对来自源的特定响应进行编码,那么可以通过在源 Web 服务器上设置 cache-control: no-transform 来禁用编码。
启用 Brotli 压缩
- 登录到 CIS 帐户。
- 选择相应的域。
- 单击“性能”选项卡。
- 单击“高级”选项卡。
- 将 Brotli 开关切换为 On。
HTML、JavaScript, 和 CSS 压缩功能
CIS 使用 Minify Web content 从 HTML,JavaScript 和 CSS 文件中除去所有不必要的字符,而不更改其功能。
CSS 和 JavaScript 压缩仅对高速缓存的 CSS 和 JS 文件进行操作。 在 CIS 返回文件的高速缓存 HIT 后,会将其以缩小格式返回到浏览器,这将允许 CIS 交付完整的缩小结果。 如果需要启用或禁用 CSS 和 JavaScript,请清除 CIS 缓存,以查看任何最小化更改的效果。
图像大小优化压缩
图像大小优化通过剥离元数据并应用无损或无损压缩来压缩在 CIS 边缘网络中高速缓存的资源。 图像大小优化通过减小图像大小来加速图像下载。 图片大小优化无法优化非现场资源。
图像大小优化压缩仅作为 UI 中的页面规则提供。 域级别设置在 CLI 中可用。
图像大小优化压缩选项
以下部分详细描述了图像大小优化压缩选项。
无损
无损选项尝试删除大多数元数据 (例如 EXIF 数据),但不会更改图像详细信息。 实际上,当未压缩时,无损图像与原始图像完全相同。
有损
lossy 选项尝试将大多数元数据剥离,并将图像压缩大约 15%。 未压缩时,原始映像中的某些冗余信息将丢失。
当应用于 PNG 时,Lossy 具有与 Lossless 相同的效果。
通过 Lossless 和 Lossy 方式,CIS 尝试删除尽可能多的元数据。 但是,无法保证会剥离所有元数据,因为其他因素 (例如高速缓存状态) 可能会影响最终在响应中发送的元数据。
WebP
WebP 是一种现代图像格式,可为图像提供卓越的无损和有损压缩。 WebP 无损图像大约比 PNGs 小 26%,而有损图像比 JPEG 小 25% 到 34%。
映像大小优化会创建并高速缓存映像的 WebP 版本。 然后,如果来自浏览器的 Accept 头包含 WebP,并且压缩后的图像显着小于无损或无损压缩,那么该图像将传递到浏览器。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
目前,仅在 Firefox,Google Chrome和 Opera 浏览器中支持 WebP。
要确保不会将 WebP 从高速缓存提供给缺少 WebP 支持的浏览器,请在使用图像大小优化时在源 Web 服务器上禁用 WebP。
验证映像大小优化是否处于活动状态
图像大小优化会将以下头添加到压缩的图像请求中:
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抛光状态以及故障排除方法。 如果未返回 Cf-Polished 头,请尝试使用单文件高速缓存清除来清除映像。
状态 | 定义 | 建议 |
---|---|---|
input_too_large |
输入图像过大或复杂,无法处理,需要更低的分辨率。 | 使用小于 1,000 像素和 10 MB 的 .png 或 .jpeg 图像。 |
not_compressed 或 not_needed | 已在源服务器上对映像进行了完全优化,并且未应用压缩。 | |
webp_较大 | 波兰尝试将图像转换为 WebP, 但图像已在原始服务器上进行了优化,并且/或者是以低质量设置创建的。 | 由于 WebP 版本不存在,因此将在响应的 JPEG/PNG 版本上设置状态。 |
cannot_optimize 或 internal_error | 输入映像在源服务器上已损坏或不完整。 | 将新版本的映像上载到源服务器。 |
format_not_supported | 不支持输入图像格式 (例如 BMP,TIFF) 和/或源服务器正在使用与波兰语不兼容的额外优化软件。 | 尝试将输入图像转换为与 Web 兼容的格式 (例如,PNG 和 JPEG) 和/或在源服务器上禁用任何额外的优化软件。 |
Vary_header_present | 源 Web 服务器发送了值不同于 accept-encoding 的 Vary 头。 | 如果原点网络服务器正试图支持 WebP,,请禁用原点网络服务器上的 WebP 并让 Polish 执行 WebP 转换。 |
当 accept-encoding 不是 Vary
头中列出的唯一头时,图像大小优化仍有效。