簡體   English   中英

為什么我的 heroku 應用程序在使用 gzip 壓縮后加載資源的時間過長?

[英]Why is my heroku app loading resources too long even after using gzip compression?

我有一個托管在 Heroku 中的 MEAN 堆棧應用程序。 在我的 Express 服務器中,我使用 gzip(通過壓縮中間件)。

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const passport = require('passport');
const adminpassport = require('passport');
const mongoose = require('mongoose');
const config = require('./config/database');
// Connect to DB

mongoose.connect(config.database);
mongoose.connection.on('connected',()=>{
    console.log('Connected to database '+config.database);
});

mongoose.connection.on('error',(err)=>{
    console.log('DB Error '+err);
});

const compression = require('compression');
const app = express();
// Static Folder
app.use(express.static(path.join(__dirname, 'public')));
app.use(compression());
// Body Parser Middleware
app.use(bodyParser.json());

...

app.use(function(req, res) {
    res.sendFile(path.join(__dirname, '/public', 'index.html'));
});

// Index Route
app.get('/', (req, res)=>{
    res.send('Invalid enpoint');
    
});



app.listen(port, ()=>{
    console.log("Server started on port "+port);
});

問題是 Angular main.js 文件(最初為 3.2mb,壓縮為 575kb)似乎仍在下載,就好像它仍然是未壓縮的大小一樣。 這是加載時間的圖像:

在此處輸入圖像描述

我知道我的互聯網連接很好(大約 20mbps)。 有什么我想念的嗎? 我的 gzip 實現有問題嗎? 甚至我的 Heroku 測功機? 這個應用程序目前在愛好測功機上。 我確實將其更改為專業的,但沒有發現任何區別。

我不確定你的環境是什么,但你可以試試這個,對我來說是完全可用的。

// Get dependencies
const express = require('express');
const path = require('path');
const http = require('http');
const bodyParser = require('body-parser');
const compression = require('compression');

const runApp = async() => {
  const app = express();
   app.use(compression({
      filter: function (req, res) {
        return (/json|text|javascript|css|font|svg/).test(res.getHeader('Content-Type'));
      },
      level: 9
  }));
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({ extended: false }));
  app.use(express.static(path.join(__dirname, 'public')));



  app.get('*', (req, res) => {
    console.log('Front end called');
    res.sendFile(path.join(__dirname, 'public/index.html'));
  });

  /**
   * Get port from environment and store in Express.
   */
  const port = process.env.PORT || '8081';
  app.set('port', port);

  /**
   * Create HTTP server.
   */
  const server = http.createServer(app);

  /**
   * Listen on provided port, on all network interfaces.
   */
  server.listen(port, () => console.log(`API running on localhost:${port}`));
};
runApp();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM