2013-03-22 60 views
2

我花了一個多小時試圖讓快遞緩存生產靜態文件。有什麼我做錯了嗎?所有標題在第一個請求中返回200,在後續請求中返回304。我甚至已經嘗試將代碼粘貼到主app.configure往返快件文檔粘貼代碼直。Express未設置最大年齡頭

Request URL:http://localhost:3000/javascripts/jquery.min.js 
Request Method:GET 
Status Code:304 Not Modified 
Request Headersview source 
Accept:*/* 
Accept-Encoding:gzip,deflate,sdch 
Cache-Control:max-age=0 


// Generated by CoffeeScript 1.3.3 
(function() { 
    var app, express, fs, http, path; 

    express = require('express'); 
    http = require('http'); 
    path = require('path'); 
    fs = require('fs'); 

    app = express(); 

    app.configure(function() { 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.compress()); 
    return app.use(require('less-middleware')({ 
     src: __dirname + '/public' 
    })); 
    }); 

    app.configure('development', function() { 
    app.use(express["static"](__dirname + '/public')); 
    app.use(app.router); 
    app.use(express.errorHandler()); 
    return console.log("Hello from dev"); 
    }); 

    app.configure('production', function() { 
    app.use(express["static"](__dirname + '/public', {maxAge: 1800})); 
    app.use(app.router); 
    return console.log("Hello from prod"); 
    }); 

    app.get('/', function(req, res) { 
    ....... 
+1

如果'緩存Control'看起來很可疑:那些標題似乎是那些發送*到*服務器,沒有收到* *從服務器。您的maxAge設置爲1.8秒,這似乎相當低。這是它 – robertklep 2013-03-22 20:27:20

+0

@robertklep是的,在'maxAge'只是設置得太低,我想我想的不秒毫秒。我把它提升到了'3600000',現在它顯示爲'max-age = 3600'。謝謝!!順便說一句,如果你在下面添加你的答案,我可以接受它。 – SkinnyG33k 2013-03-22 21:04:27

回答

4

maxAge是以毫秒爲單位的值,而你的情況似乎相當低(1800,這是1.8秒)。這些資源可能會從緩存中到期之前,你甚至可以重新加載他們的機會,所以他們似乎永遠不會緩存。

+0

緩存控制最大年齡爲秒,不毫秒http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html – onlyurei 2015-01-08 20:34:39

+0

原來,而不是快速使用毫秒的靜態中間件秒爲單位對於最大年齡,令人困惑。 – onlyurei 2015-01-08 20:43:21

相關問題