首页 > 解决方案 > 如何使用 Cloudflare Worker 的缓存 API 呈现 HTML 字符串?

问题描述

缓存 API 在我下面的示例中完美运行:

addEventListener('fetch', function(event) {
  event.respondWith(handleRequest(event))
})

async function handleRequest(event) {
  const { request } = event
  const cacheUrl = new URL(request.url)
  const cacheKey = new Request(cacheUrl.toString(), request)
  const cache = caches.default
  let response = null
  response = await cache.match(cacheKey)
  if (!response) {
    const { searchParams } = cacheUrl
    let pageId = searchParams.get('pageId')
    response = await fetch(myURL)
    event.waitUntil(cache.put(cacheKey, response.clone()))
    response = new Response(response.body, response)
    response.headers.append('Cache-Control', 's-maxage=10000')
    event.waitUntil(cache.put(cacheKey, response.clone()))
  }
  return response
}

我得到这样的回应:

{
  data: "
  <html>
    <body>
      <div>Hello Everyone!</div>
    </body>
  </html>
  "
}

但我想从上面的对象渲染 HTML 字符串,所以我像这样更改我的代码:

// return response; 
  return new Response(response.data, {
    headers: {
      'content-type': 'text/html;charset=UTF-8',
    },
  })

然后我得到一个空页面,正文标签中没有任何内容。

有人能帮我吗?

标签: javascriptcloudflarecloudflare-workers

解决方案


推荐阅读