NodeJs网站TTFB很高,网站运行速度非常慢

编程入门 行业动态 更新时间:2024-10-21 19:09:00
本文介绍了NodeJs网站TTFB很高,网站运行速度非常慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我已经使用Express&在nodejs中创建了一个网站.玉. 当我以很少的内容加载简单的登录页面时,即使这样加载起来也要花费很多时间. TTFB太高(请参阅随附的屏幕截图.) 以下是我的app.js代码.不知道我在做什么错.

I have created a website in nodejs with Express & Jade. When i load the simple login page with very less content, even then it taking is much time to load. It's TTFB is too high (ref to screenshot attached.) Below is my app.js code. Not sure what i'm doing wrong.

app.js

// Packages var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var dbhelper = require('./routes/dbhelper.js') var common = require('./routes/common.js') var session = require('express-session') var http = require('http'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } })) // uncomment after placing your favicon in /public //app.use(favicon(__dirname + '/public/favicon.ico')); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(require('stylus').middleware(path.join(__dirname, 'public'))); app.use(express.static(path.join(__dirname, 'public'))); //app.locals.basedir = path.join(__dirname, 'views'); // set up mustbe config var mustBe = require("mustbe"); var mustBeConfig = require("./mustBeConfig"); mustBe.configure(mustBeConfig); // Routes var routes = require('./routes/index'); var users = require('./routes/users'); var dashboard = require('./routes/dashboard'); var monitor = require('./routes/monitor'); var resetpassword = require('./routes/resetpassword'); var archive = require('./routes/archive'); var archiveList = require('./routes/archiveList'); var archiveSetup = require('./routes/archivesetup'); app.locals.moment = require('moment'); app.use(function (req, res, next) { res.locals.session = session; next(); }); // Make database connection available to router app.use(function (req, res, next) { req.sessionID = req.sessionID; req.db = dbhelper.sql; req.config = dbhelper.config; req.ActionOutput = common.ActionOutput; req.ActionStatus = common.ActionStatus; req.ChangeEmployer = common.ChangeEmployer; // Redirect to login page if no session found if ((session.Employee == null || session.Employee == undefined || session.Employee == '') && (req.url != '/' && req.url != '' && req.url != '/login')) res.redirect('/'); // Redirect to dashboard if session exists & redirecting to login page else if ((session.Employee != null && session.Employee != undefined && session.Employee != '') && (req.url == '/' || req.url == '' || req.url == '/login')) res.redirect('/dashboard'); else next(); }); app.use('/', routes); app.use('/users', users); app.use('/dashboard', dashboard); app.use('/monitor', monitor); app.use('/resetpassword', resetpassword); app.use('/archive', archive); app.use('/archiveList', archiveList) app.use('/archivesetup', archiveSetup); process.on('uncaughtException', function (err) { console.log('Caught exception: ${ err}'); var EID = SaveErrorLog(err.message, err.stack, 'a', err.address); }); app.use(function (err, req, res, next) { if (!err) return next(); var EID = SaveErrorLog(err.message, err.stack, req.connection.remoteAddress , err.path); // Check if request is ajax var is_ajax_request = req.xhr; var op = new common.ActionOutput(); op.ActionStatus = common.ActionStatus.Error; op.Message = err.message; res.send(op); }); function SaveErrorLog(Message, CompleteError, IP, URL) { // Get Logged In User var UserID = null; if (session.SupportUser != null && session.SupportUser != undefined && session.SupportUser != '') { UserID = session.SupportUser.UserID; } else if (session.Employee != null && session.Employee != undefined && session.Employee != '') { UserID = session.Employee.EmployeeID; } // Log Error Into Database var ErrorLogID = 0; var sql = dbhelper.sql; var conn = new sql.Connection(dbhelper.config); conn.connect().then(function () { // Stored Procedure var request = new sql.Request(conn); request.input('UserID', sql.BigInt, UserID); request.input('Message', sql.VarChar(500), Message); request.input('CompleteError', sql.VarChar(2000), CompleteError); request.input('IP', sql.VarChar(50), IP); request.input('URL', sql.VarChar(50), URL); request.execute('USP_SaveErrorLog', function (err, recordset, returnValue) { if (!err && recordset[0][0].ValidationCode == null) { ErrorLogID = recordset[0][0].ErrorLogID; } else { } return ErrorLogID; }); }); } // catch 404 and forward to error handler app.use(function (req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function (err, req, res, next) { res.status(err.status || 500); res.render('shared/error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function (err, req, res, next) { res.status(err.status || 500); res.render('shared/error', { message: err.message, error: {} }); }); module.exports = app; //app.listen(1234, function () { // console.log('Server starts on port: ' + 1234); //}); http.createServer(app).listen(1234, function () { console.log('Express server listening on port ' + 1234); });

我还从app.js中删除了所有与数据库相关的工作,但仍然面临着同样的问题. 任何帮助都将是可观的.

I have also removed all database related work from app.js but still facing same issue. Any help would be appreciable.

推荐答案

我们使用了类似的方法,它将缓存玉石内容并减少TTFB

We have used something like this, it will cache jade content and reduce TTFB

/* GET home page. */ router.get('/', function (req, res) { var abs = session.Employers; var options = {cache: true , title: 'Express'}; //Method 1 //var template = jadepileFile('./views/login/index.jade', options); //res.send(template({ title: 'Express' })); //Method 2 res.send(jade.renderFile('./views/login/index.jade', options)); });

更多推荐

NodeJs网站TTFB很高,网站运行速度非常慢

本文发布于:2023-11-29 00:44:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1644616.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:很高   网站   运行速度   NodeJs   TTFB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!