Express静态文件未更新

3
我正在使用express运行一个本地服务器。该服务器能够显示我电脑上的一些本地文件,其中包括一个名为“lastResult.txt”的文件,每次运行bash脚本时都会更新该文件。
但是,奇怪的是,当我运行服务器并尝试显示该文件时,它显示的是一周前的版本。这个文件在一周内已经在本地更新过了。即使重新启动服务器或在不同的浏览器上也是如此。
我正在使用serve-index模块来显示目录。

如果在重新启动服务器时文件没有改变,那么要么浏览器正在缓存文件本身,要么您可能没有显示和更新相同的文件。不太可能存在在服务器重启后仍然存在的服务器端缓存。您可以在Chrome调试器的网络选项卡中查看浏览器是从自己的缓存加载该文件还是从服务器获取它。很可能是浏览器缓存问题,或者您没有在服务器上更新和显示相同的文件。 - jfriend00
2个回答

4
你没有说你是如何提供静态文件的 - 是使用express.static还是一些自定义的处理程序。express.static不会缓存文件,但您的自定义处理程序可能会。无论如何,这些文件可以根据ETag和Max-Age的值在客户端上进行缓存,但即使如此,它们也不应该在使用另一个浏览器访问后继续存在。
从你描述的情况来看,似乎你没有更新正确的文件或在正确的目录中。当然,由于你没有包含任何代码行,所以只能猜测,但看起来是这样的。

是的,这样搞定了。它从自定义位置检索文件,但由于目录中的其他文件都被正确检索了,我没有注意到它。谢谢! - eatorres

0

这个问题已经得到了解答。
我在这里补充一些内容,以防有人需要一个类似的问题的示例(这是一个不明显的问题)。

在使用EJS和express时遇到了类似的问题。

  • 我正在导入一个头部。
  • 头部加载了CSS。
  • 有两个不同文件夹中都有一个名为base.css的CSS文件(同一个CSS文件名在两个不同的文件夹中:projectroot/pages/base.cssprojectroot/views/base.css
  • 头部.ejs文件所在的文件夹是projectroot/views/(这是我想要的base.css)
  • 从路径的角度来看,有意加载另一个CSS文件应该需要:../pages/base.css
  • 为了完全明确,我应该像这样在本地目录中引用CSS文件:./base.css,但我却像这样引用它:base.css
  • 令人惊讶的是...被加载的CSS文件是位于projectroot/pages/目录而不是projectroot/views/目录中的那个
  • 将引用更改为./base.css修复了问题

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接