node.js - 使用 static()、staticCache() 和 compress() node.js 连接中间件

标签 node.js express connect

我有一个 Express 3.0 应用程序,我正在尝试使用 static()staticCache()compress()服务和压缩我的静态文件的中间件。这是我当前的 app.configure() 函数:

 app.configure(function() {
  app.use(express.favicon(__dirname + '/public/favicon.ico', {maxAge: 86400000}));
  app.use(express.bodyParser());
  app.use(express.cookieParser('foo'));
  app.set('views', __dirname + '/views');
  app.engine('.html', mustache({cache: true}).render);
  app.use(express.session({ store: sessionStore, secret: 'foo'}));
  app.use(express.staticCache());
  app.use(express.static(__dirname + '/public', {maxAge: 86400000}));
  app.use(express.compress());
});

// routes are loaded here

使用此配置,YSlow 报告我的 .css 和 .js 文件未压缩,如果不清除浏览器并多次刷新页面,我无法获得缓存命中。我还尝试在 staticCache 中间件中放入调试语句来报告缓存命中并运行 ab -n 10000 -c 500 显示 0 缓存命中。

显然我做错了什么(我猜测顺序或选项搞砸了)但我不知道它是什么。有人有这三个中间件一起正常工作的工作示例吗?

最佳答案

  • 首先将 app.use(express.compress()); 作为第一个中间件,记住中间件位于 FIFO 堆栈中...
  • static 部分放在 session 部分之前,更好的是,将它们分成单独的路由(/app - 带有 cookie、 session 和 bodyParser,/static - 不带有)
  • 哦,忘记 staticCache 它已被弃用并且与 static 不兼容,如果您想要更成熟的静态服务组件,请使用 st

关于node.js - 使用 static()、staticCache() 和 compress() node.js 连接中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218003/

相关文章:

android - phonegap run android - 创建命令失败,退出代码 8 - linux

python - 将视频流从 NodeJS 实时发送到 python

node.js - 将await/async 与mocha、chai 一起使用

node.js - 如何将各种 Mongoose 结果连接到一个 JSON 数组以显示在 DataTable 上?

mysql - 无法使用 MySQL Workbench 将 mysql 构建与 dockerfile 连接

node.js - 设置 Heroku Scheduler 作业以向所有用户发送电子邮件 (Meteor/MongoDB)

angularjs - Mean.io 框架与 socket.io

php - 您如何有效地在 php 中连接到 mysql 而无需重新连接每个查询

node.js - 从 Express 堆栈中删除中间件的正确方法?

node.js - 从包含的 eval 脚本访问 Nodejs main 的局部变量上下文