AMP
  • 网站

混合动态和缓存数据

简介

这是一个示例,展示如何集成产品数据详情,例如描述、价格、可用性等,以及不同的数据新鲜度要求。AMP 可以从 AMP 缓存中提供。由于 AMP 缓存的过时-同时-重新验证缓存策略,一位用户在获取最新版本之前会看到过时的数据。如果产品数据始终需要保持最新,例如产品可用性,这可能会成为一个问题。此示例演示了一种避免缓存 AMP 上出现过时数据的方法。

设置

我们使用 amp-list 从服务器检索最新数据。

<script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>

我们使用 amp-mustache 作为 amp-list 的模板

<script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>

如何实现动态和缓存的产品数据详情

对于产品详情(如描述或标题),这些信息不太可能频繁更改,您无需执行任何特殊操作。为了确保用户始终看到最新内容,您可以使用 amp-list 组件,该组件将直接从您的服务器提取和呈现内容。

我的产品

这是一个非常棒的产品。

<h3>My product</h3>
<p>This is a really great product.</p>
<amp-list height="24"
          layout="fixed-height"
          src="/static/samples/json/product.json"
          binding="no">
  <template type="amp-mustache">
    Price: ${{price}}
  </template>
</amp-list>

如果您需要多次调用才能获取所有数据,这在 AMP 中不是问题,因为如果在页面中找到多个具有相同 srcamp-list,AMP 运行时实际上只会进行一次网络调用。

通过检查 Chrome 开发人员控制台的网络选项卡,您可以检查第二个 amp-list 是否不会导致第二次网络调用。

由于我们使用的是 service-worker,您可能会看到两次相似的调用,一次接一次地调用同一个端点,因此为了更好地验证此行为,请转到“应用程序”->“服务工作线程”并单击“取消注册”。

<amp-list height="24"
          layout="fixed-height"
          src="/static/samples/json/product.json"
          binding="no">
  <template type="amp-mustache">
    Availability: {{availability}}
  </template>
</amp-list>
需要进一步解释?

如果此页面上的说明没有涵盖您的所有问题,请随时联系其他 AMP 用户以讨论您的确切用例。

转到 Stack Overflow
一个无法解释的功能?

AMP 项目强烈鼓励您的参与和贡献!我们希望您成为我们开源社区的持续参与者,但也欢迎您为特别感兴趣的问题做出一次性贡献。

在 GitHub 上编辑示例