静态网站示例和提示

本页面显示了使用存储桶托管静态网站的示例和提示。

专用页面

索引页面

索引页面(也称为网络服务器目录索引)是指当访问者请求访问的网址不具有关联文件时系统向其传送的一个文件。如果您分配了 MainPageSuffix 属性,Cloud Storage 则会查找使用该名称且前缀与访问者请求访问的网址匹配的文件。

例如,假设您将静态网站的 MainPageSuffix 设置为 index.html。另外假设您的存储桶 www.example.com 中没有名为 directory 的文件。在这种情况下,如果用户请求访问网址 http://www.example.com/directory,Cloud Storage 则会尝试传送 www.example.com/directory/index.html 文件。如果该文件也不存在,Cloud Storage 则会返回错误页面。

MainPageSuffix 还可控制系统在用户请求访问顶级网站时传送的文件。继续上面的示例,如果用户请求访问 http://www.example.com,Cloud Storage 则会尝试传送文件 www.example.com/index.html

尝试访问以斜杠结尾的网址(例如 http://www.example.com/dir/)时,请参阅问题排查

错误页面

错误页面是指当静态网站访问者请求访问的网址与现有文件不对应时系统向其返回的文件。如果您分配了 MainPageSuffix,那么仅当使用请求名称的文件和适用索引页面都不存在时,Cloud Storage 才会返回错误页面。

返回错误页面时,http 响应代码为 404NotFoundPage 属性控制充当错误页面的文件。如果您没有设置 NotFoundPage,用户则会收到一般错误页面。

网站配置示例

包含三个对象的存储桶

假设一个名为 www.example.com 的存储桶已被配置为具有以下设置和文件的网站:

  • MainPageSuffix =“index.html”
  • NotFoundPage =“404.html”
  • 该存储桶包含三个公开共享的对象:“index.html”“404.html”和“dir/index.html”。

下表显示了为所选网址传送的内容:

请求的网址 传送的内容 HTTP 响应代码
http://www.example.com
http://www.example.com/
http://www.example.com/index.html
对象“index.html”。 200
http://www.example.com/hello 对象“404.html”。 404
http://www.example.com/dir/index.html 对象“dir/index.html”。 200
http://www.example.com/dir 对象“dir/index.html”。 301
http://www.example.com/dir/ 对象“dir/index.html”(假设 /dir/ 不存在零字节对象) 200
零字节空对象(如果 /dir/ 存在此对象)。如需移除此零字节对象,请参阅问题排查主题 301

包含两个对象的存储桶

假设一个名为 www.example.com 的存储桶已被配置为具有以下设置和文件的网站:

  • MainPageSuffix =“main.html”
  • NotFoundPage =“404.html”
  • 该存储桶包含两个公开共享的对象:“main.html”和“404.html”。

下表显示了为所选网址传送的内容:

请求的网址 传送的内容 HTTP 响应代码
http://www.example.com
http://www.example.com/
对象“main.html”。 200
http://www.example.com/index.html 对象“404.html”。 404

如果对象被公开共享,您也可以使用以下网址查看该对象:

http://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME

例如,index.html 对象的网址为:

http://storage.googleapis.com/www.example.com/index.html

要详细了解如何使用可公开访问的数据,请参阅访问公开数据

有关使用配置为网站的存储桶的提示

使用存储桶托管静态网站时,请牢记以下提示。

添加子网域

假设您还希望通过一个与服务 www.example.com 内容的存储桶不同的存储桶来服务 test.example.com 的内容。为此,请执行以下操作:

  1. 创建新的存储桶以传送您的其他内容。

  2. 如果您按照托管静态网站中的教程通过 HTTPS 传送内容,请按以下方式在 Google Cloud 控制台中修改负载均衡器:

    1. 后端配置部分,通过选择您创建的新存储桶来创建新的后端存储桶 test-bucket
    2. 对于主机和路径规则,请添加新规则,如下所示:
      Hosts                  Paths     Backends
      test.example.com       /*        test-bucket
      
    3. 对于前端配置,请添加值与第一个配置相同的新前端 IP 和端口,但以下情况例外:

      • 对于 IP 地址,创建并预留新的 IP 地址。
      • 对于证书,为 test.example.com 创建新的 SSL 证书。
  3. 更新负载均衡器后,使用新前端配置的 IP 地址向网域注册服务添加新的 A 记录。

    NAME                  TYPE     DATA
    test                  A        IP_ADDRESS
    

API 行为

MainPageSuffixNotFoundPage 网站配置仅用于通过 CNAMEA 重定向传入 Cloud Storage 的请求。例如,向 www.example.com 发出的请求会显示索引页面,但向 storage.googleapis.com/www.example.com 发出的等效请求则不会。

因此,向 Cloud Storage 网域(例如 storage.googleapis.com/www.example.com)发送的请求的 API 行为将会被保留。例如,您可以像在任何其他存储桶中一样继续列出 www.example.com 存储桶中的对象。对于 www.example.com 存储桶,您收到的对象列表包括 404.htmlindex.html

托管动态网站的静态资源

对于已在 Google App EngineGoogle Compute Engine 之类的服务中托管的动态网站,您可以使用 Cloud Storage 托管其静态资源。在存储桶中托管静态资源(如图像或 JavaScript 文件)的部分好处包括:

  • Cloud Storage 的行为类似于内容分发网络 (CDN),因为默认情况下,可公开读取的对象会缓存在 Cloud Storage 网络中。

  • 借助 Cloud Storage,访问内容的带宽费用通常更低。

  • 从 Cloud Storage 传送静态内容时,Web 服务器的负载减轻。

托管动态网站的静态资源时,您无需像静态网站那样创建 DNS 记录并指向存储桶或负载均衡器。例如,您可能拥有一个名为 www_example_com_assets 的存储桶并已将适当的资源配置为公开共享,可以使用 Cloud Storage 网域访问这些资源。例如,假设您公开共享了存储桶 www_example_com_assets 中的 JavaScript 文件 library.js,则可以通过 http://storage.googleapis.com/www_example_com_assets/library.js 访问该资源。

设置缓存参数

您可以配置 Cache-Control 元数据来控制如何或是否缓存网站资源。通常,仅为所有匿名用户可访问的对象设置缓存控制元数据,此要求适用于作为静态网站的一部分从 Cloud Storage 存储桶传送的所有对象。

除非指定明确的缓存控制设置,否则 Cloud Storage 会将 3,600 秒的缓存控制设置应用于所有匿名用户可访问的对象。如需了解有关设置对象元数据(例如 Cache-Control)的说明,请参阅查看和修改元数据

您还可以使用 Cloud CDN 缓存靠近用户的外部 HTTP(S) 负载均衡内容,这样通常会降低传送费用。如需了解详情,请参阅缓存

监控费用

如果您正在从配置为静态网站的存储桶传送资源,或者从存储桶为 Cloud Storage 之外托管的动态网站传送静态资源,您应监控包含该存储桶的项目产生的费用。传送内容时,会因存储内容、使用网络和执行检索操作而产生 Cloud Storage 费用。如需了解详情,请参阅“Cloud Storage 价格”页面

如果您使用外部应用负载均衡器来设置 HTTPS,则可能还会产生网络费用。如需了解详情,请参阅网络价格

价格示例页面上的简单价格示例可视为低流量静态网站用例的近似值。请注意,该示例未说明与外部应用负载均衡器相关的费用,但这通常是静态网站托管的最大费用。您可使用价格计算器根据您的预计用量来估算费用。

Google Cloud 新用户可能有资格申请免费试用

如果您是现有 Google Cloud 用户,则可以在结算页面上详细了解项目费用。

问题排查

有关与使用为传送静态网站内容而配置的存储桶相关的常见问题,请参阅问题排查

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud Storage 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Cloud Storage