当前位置: 首页 > 知识库问答 >
问题:

如何在Express4应用程序中禁用某些路由的缓存?

滕祯
2023-03-14

我尝试了以下示例:从Express.js中删除所有头,在Express node.js中禁用etag头,以及https://github.com/expressjs/Express/issues/2472,但不幸的是,它们没有解决我的问题。在Firefox、Opera和Chrome中,当开发者工具打开并禁用缓存时,或者当我在浏览器上线后第一次启动应用程序时,我的应用程序都能正常工作。我知道这与缓存有关。请告诉我,如何在Express应用程序中禁用某些路由的缓存。有可能吗?有没有一个通用的方法来做这件事?

附注。我很惊讶,但我的Express应用程序在Internet Explorer 11中运行得很好

共有1个答案

洪季萌
2023-03-14

在Express.js中处理缓存时需要考虑两件事

  1. ETAG
  2. 缓存控制标头。

埃塔格

如果您的动态内容不能从ETags中受益,那么最好禁用它,因为它在每个请求中带来的开销很小。

app.set('etag', false)

缓存控制

要完全禁用缓存,请使用以下头:

app.use((req, res, next) => {
  res.set('Cache-Control', 'no-store')
  next()
})

此标头不影响express.static()中间件。它以自己的方式处理缓存。

 类似资料:
  • 问题内容: 我使用PHP库生成一些图像。 有时浏览器不会加载新生成的文件。 如何仅为我动态创建的图像禁用缓存? 注意:随着时间的推移,我必须对创建的图像使用相同的名称。 问题答案: 对于这个问题,一种常见而简单的解决方案是给每个对动态图像的请求添加一个随机生成的查询字符串,这种解决方案看起来很像黑客,但移植性很强。 因此,例如- 会成为 要么 从Web服务器的角度来看,可以访问同一文件,但是从浏览

  • 问题内容: 我有一个单页应用程序,实际上只有一个页面。只有一个视图使用angularjs完成了许多javascript / ajax逻辑,但是没有路由到其他视图。 因此,我想在网址末尾混搭hashbang(#/)。我可以以某种方式完全关闭angularjs路由吗? 顺便说一句:我了解Htm5Mode,但是我希望它能在所有浏览器中使用。 问题答案: 如果没有定义,则不会进行路由,因此您的url中不会

  • 我有一个,其中有8个项目,我想显示其中的所有项目,但在特定条件下,用户只能选择前两个项目,因此我编写了程序,如果条件为真,用户选择任何其他选项,则会显示一个消息框,显示然后自动选择默认值。到现在为止,一直都还不错。 但现在的问题是,用户无法通过查看的选项来判断他可以选择哪些选项,因此我想做的是,如果条件为真,那么除前两个选项之外的所有选项都应该被禁用(或灰显或其他),这样用户就可以判断出您无法选择

  • 我正在一个Spring Boot应用程序中实现Spring Security性,以执行JWT验证,其中我有一个过滤器、一个AuthenticationManager和一个AuthenticationProvider。我想做的是,我想对某些资源路径禁用安全性(使它们基本上不安全)。 我在securityConfig类(从WebSecuirtyConfigurerAdapater扩展而来)中尝试的内容

  • 我有一个带有SSR、Vue Cli、Vuex和Typescript的Vue3项目。 在路由器页面中,我需要将数据提交到Vuex存储。在一个。vue文件我只是使用这个$在vuex中键入的存储。d、 例如: 但是如何从没有this或vue实例的ts文件(router/index.ts)中执行此操作呢。 我尝试导入存储索引文件并提交: 但我犯了个错误 类型“”上不存在属性“提交”()= 存储文件(因为我

  • 问题内容: 当我使用Alamofire两次发送GET请求时,我得到的响应是相同的,但是我期望得到不同的响应。我想知道这是否是由于缓存造成的,如果是这样,我想知道如何禁用它。 问题答案: 迅捷3,alamofire 4 我的解决方案是: 为Alamofire创建扩展: 并使用它: