# express.static

提供静态文件,基于 serve-static。

# 概要

express.static(root, [options])

# 描述

这是 Express 中内置的中间件函数。它提供静态文件,基于 serve-static。

注意

为获得最佳效果,使用反向代理缓存以提高服务静态资产的性能。

root 参数指定提供静态资产的根目录。该函数通过将 req.url 与提供的 root 目录组合来确定要服务的文件。当找不到文件时,它不会发送 404 响应,而是调用 next() 以继续下一个中间件,从而允许堆叠和回退。

下表描述了 options 对象的属性。另见 下面的例子。

属性 描述 类型 默认
dotfiles 确定如何处理点文件(以点 "." 开头的文件或目录)。 字符串 "ignore"
etag 启用或禁用 etag 生成注意:express.static 总是发送弱 ETag。 布尔值 true
extensions 设置文件扩展名后备:如果找不到文件,请搜索具有指定扩展名的文件并提供第一个找到的文件。示例:['html', 'htm']。 混合 false
fallthrough 让客户端错误作为未处理的请求通过,否则转发客户端错误。 布尔值 true
immutable 在 Cache-Control 响应标头中启用或禁用 immutable 指令。如果启用,还应指定 maxAge 选项以启用缓存。immutable 指令将阻止受支持的客户端在 maxAge 选项的生命周期内发出条件请求以检查文件是否已更改。 布尔值 false
index 发送指定的目录索引文件。设置为 false 以禁用目录索引。 混合 "index.html"
lastModified 将 Last-Modified 标头设置为操作系统上文件的最后修改日期。 布尔值 true
maxAge 设置 Cache-Control 标头的 max-age 属性(以毫秒为单位)或 ms 格式 中的字符串。 数字 0
redirect 当路径名是目录时,重定向到尾随 "/"。 布尔值 true
setHeaders 用于设置 HTTP 标头以与文件一起服务的功能。 函数

有关详细信息,请参阅 在 Express 中提供静态文件。和使用中间件 - 内置中间件。

# dotfiles

此选项的可能值为:

  • "allow" - 对点文件没有特殊处理。
  • "deny" - 拒绝对点文件的请求,以 403响应,然后调用 next()。
  • "ignore" - 就好像点文件不存在一样,用 404响应,然后调用 next()。

# fallthrough

当此选项为 true时,客户端错误(例如错误请求或对不存在文件的请求)将导致此中间件简单地调用 next()以调用堆栈中的下一个中间件。当为 false 时,这些错误(甚至是 404)将调用 next(err)。

将此选项设置为 true,以便您可以将多个物理目录映射到同一个 Web 地址或路由以填充不存在的文件。

如果您已将此中间件安装在严格设计为单个文件系统目录的路径上,请使用 false,这允许短路 404 以减少开销。这个中间件也会响应所有的方法。

# setHeaders

对于此选项,指定一个函数来设置自定义响应标头。对标头的更改必须同步发生。

该函数的签名是:

fn(res, path, stat)

参数:

  • res,响应对象。
  • path,正在发送的文件路径。
  • stat,正在发送的文件的 stat对象。

# express.static 示例

下面是一个将 express.static中间件函数与精心设计的选项对象一起使用的示例:

const options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders (res, path, stat) {
    res.set('x-timestamp', Date.now())
  }
}

app.use(express.static('public', options))
Last Updated: 3/22/2023, 7:27:28 PM