Express.js:为 webpack 中捆绑的静态资产设置缓存控制标头
Posted
技术标签:
【中文标题】Express.js:为 webpack 中捆绑的静态资产设置缓存控制标头【英文标题】:Express.js: Set cache-control header for static assets bundled in webpack 【发布时间】:2017-10-19 16:15:51 【问题描述】:我不知道如何使用 express.js 和 webpack 为静态资产设置 Cache-Control 标头。
在我的 react 应用中,我包含如下静态图像:
<img src=require("./images/Logo.png") />
我的 webpack.config.js 中有一个加载器,可以将图像输出到 /public/images
module:
loaders: [
test: /\.png/,
loader: 'url-loader?limit=10000&name=public/images/[name].[ext]'
]
最后,我将 server.js 中的 /public 文件夹标记为包含静态资产并设置 Cache-Control 标头
const server = express();
server.use(express.static(path.join(__dirname, 'public'), maxAge: "30d"));
问题是require()
解析的路径包括/public文件夹:
<img class="full-width" src="/public/images/Logo.png" >
但 express
需要一个没有 public/
部分的 URL。
有没有办法强制express.static()
在其路径中包含/public
?
【问题讨论】:
【参考方案1】:有没有办法强制
express.static()
在其路径中包含/public
?
绝对:
server.use('/public', express.static(path.join(__dirname, 'public'), maxAge: "30d"));
【讨论】:
谢谢。我试过了,虽然静态资产是来自/public/images
URL 的服务器,但 Cache-Control 标头不存在。我需要一个静态资产具有此标头的解决方案
为我工作:Cache-Control: public, max-age=2592000
我已经在一个单独的项目中尝试过了,它确实有效。问题一定出在其他地方。感谢您的帮助!以上是关于Express.js:为 webpack 中捆绑的静态资产设置缓存控制标头的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Express.js、GraphQL、客户端和服务器文件夹为 React 应用程序配置 Webpack?
无法访问我的站点中的链接(复制和粘贴):Node.js - Express.js - Webpack - Vue.js - 历史模式
如何在与 webpack 捆绑时将 SASS 变量转换为原生 CSS 变量?