首页 > 解决方案 > 在 KOA 框架中设置头部缓存控制

问题描述

我正在使用使用 KOA 框架构建的应用程序。我不是开发人员,但我必须尝试找出页面缓存的原因。在所有浏览器中,即使是硬重新加载也不起作用。您实际上必须清除缓存才能看到页面更新。

我想将此添加到我的 index.js 中,但我不知道在哪里添加该行。

任何人都可以帮忙吗?

ctx.set('缓存控制', '无缓存');

我想告诉 KOA 将每个页面的标题设置为不缓存。

标签: javascriptnode.jscachingkoa

解决方案


要将标头应用于所有请求,您需要编写一个中间件函数(服务器端)

// set header function
function setNoCacheHeaders(ctx) {
  ctx.set('Cache-Control', 'no-store, no-cache, must-revalidate')
  ctx.set('Pragma', 'no-cache')
  ctx.set('Expires', 0)
}

// Middleware that adds the header to all requests
app.use(async (ctx, next) => {
    await next()
    setNoCacheHeaders(ctx)
})

希望有帮助...

还有一点需要注意:如果您对(浏览器)缓存的 javascript 文件有问题,您可以通过使用版本字符串或随机数作为查询参数来请求它来强制它。这样的事情可以强制重新加载你的javascript (客户端)

<script type="text/javascript">
    document.write('<scr'+'ipt src="/js/file.js?'+Math.random()+'" type="text/javascript"></scr'+'ipt>');
</script>

推荐阅读