나는 의견을 말하고 싶지만 나는 지금 막 참가하여 명성을 얻지 못했다.
올바르게 이해하면 express.static을 사용하여 페이지를 제공하고 있습니다 (일반 HTML 페이지이기 때문에). 사용자가 로그인 한 경우 익스프레스 라우터를 사용하고 있습니까? 맞습니까?
홈페이지의 경로에 헤더를 설정하는 데 언급 된 코드를 넣는 것으로 추측됩니다.
그런 경우라면 브라우저 캐싱이 아닌 connect
미들웨어의 특성으로 인해 문제가 발생합니다.
Middlewares는 실행이 끝났을 때 다음 명령을 호출합니다. 즉, 올바르게 가정하면 express.static이 라우터 이전에 호출되어 정적 HTML 페이지를 제공합니다.
express.static가 next()
을 호출하지 않으므로 경로가 실행되지 않습니다. 명백한 이유로 파일이 존재합니다.
희망이 있다고 생각합니다.
편집 : 내가 잘못 가정처럼
보인다. 랩톱에서 잘 작동한다고해서 클라이언트 측 캐싱 문제와 같은 것처럼 보입니다.
express.static()을 사용하여 다른 홈페이지를 표시하는 방법이나 위에 언급 한 코드를 배치하는 방법을 모르겠지만 코드를 보지 않고도 사진을 찍을 수는 있습니다. 당신을 돕기 위해 나와 다른 사람들에게 필요했습니다.
첫 번째 응답에서 응답 헤더를 설정해야합니다 (사용자가 홈페이지를 방문했을 때). 응답 헤더는 리디렉션과 관련이 없습니다. 이제는 리디렉션 부분을 제외 시키십시오.
var express = require('express'),
http = require('http')
app = express();
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
/*
* Here's where I set the headers, make sure it's above `express.static()`.
*
* Note: You can safely ignore the rest of the code, (it's pretty much "stock").
*/
app.use(function noCachePlease(req, res, next) {
if (req.url === '/') {
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
}
next();
});
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function() {
app.use(express.errorHandler());
});
http.createServer(app).listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
이 코드는 페이지를 캐시하지 않는 브라우저를 지시합니다
나는 빠른 (표현) 예제를 썼다. 내가
noCachePlease
미들웨어
을 얻을 Accept-Ranges bytes
Cache-Control public, max-age=0
Connection keep-alive
Content-Length 5
Content-Type text/html; charset=UTF-8
Date Fri, 20 Jul 2012 19:25:38 GMT
Etag "5-1342811956000"
Last-Modified Fri, 20 Jul 2012 19:19:16 GMT
X-Powered-By Express
응답 헤더 :
응답 헤더 내가없이 noCachePlease
미들웨어 를 얻을 당신이 볼 수 그래서
Accept-Ranges bytes
Cache-Control no-cache, no-store, must-revalidate
Connection keep-alive
Content-Length 5
Content-Type text/html; charset=UTF-8
Date Fri, 20 Jul 2012 19:26:08 GMT
Etag "5-1342811956000"
Expires 0
Last-Modified Fri, 20 Jul 2012 19:19:16 GMT
Pragma no-cache
X-Powered-By Express
를, 그것은 작동 하지만이 코드는 직접 실행할 수 있습니다.
실행하려면 express
을 node_modules
아래에 두거나 전체적으로 (-g
플래그와 함께) 설치해야합니다.
이러한 헤더는 리디렉션을 수행하는 페이지가 아닌 캐시하지 않을 페이지 ('/')에 작성해야합니다. 맞습니까? –
수정하십시오. 그래, 아마도 그들을 잘못된 장소에 세우고있을거야. 이것을 들여다 보게됩니다. –
문제는 브라우저 캐싱을 포함하지 않습니다. 어떤 이유로 든 Express는 실제 리디렉션이 아닌 304를 보내고 브라우저가 적절히 응답하고 있습니다 (예 : 이전 버전 유지). 익스프레스가 수행하는 일종의 내부 캐싱 인 것 같습니다. Express.static을 사용하여 문제의 페이지를 제공 할 수 있습니까? – ebohlman