2013-04-19 6 views
3

내가 처리하고있는 백그라운드 이미지가 상당히 크며 영구적으로 캐시하고 싶습니다. 나는 무한대의 최대 나이를 가진 캐시 헤더를 보내야한다고 생각한다. 나는 이것을 어떻게 깨끗하고 적절한 방법으로 할 수 있는가? 나는 익스프레스를 사용하고 있으며 캐싱 모듈이 없다.Express/Nodejs를 사용하여 단일 리소스를 캐시하는 방법

답변

5

정적 배경 이미지의 경로와 일치 할 수있는 미들웨어 처리기를 설정 한 다음 캐시 제어 헤더를 설정할 수 있습니다. 이렇게하면 이미지에 대한 캐시 제어 헤더가 설정되지만 다른 정적 자원에는 적합하지 않습니다.

app.configure(function(){ 
    app.use(function(req, res, next) { 
    var matchUrl = '/background.jpg'; 
    if(req.url.substring(0, matchUrl.length) === matchUrl) { 
     res.setHeader("Cache-Control", "max-age=31556926"); 
    } 
    return next(); 
    }); 
    app.use(express.static(path.join(application_root, "StaticPages"))); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

순서가 중요합니다. 미들웨어 기능은 express.static 처리기 전에 줄서야합니다.

+0

이것이 내가 찾던 바로 그 것이다. 고마워. – n0pe

1

더 나은 방법은 이미지를 축소 한 다음 다이어트 JPEG (OS X)와 같은 프로그램을 사용하여 파일 크기를 최소화하는 것입니다.

+0

전화를 걸었습니다. 나는 크기와 크기가 절반으로 줄어들었고, 대니얼의 설명대로 미들웨어 솔루션을 사용하고 있습니다. – n0pe

관련 문제