2012-07-06 4 views
16

개발 중에 내 JS 파일에 대해 합리적인 캐시 만료를 설정하려고합니다. HTML, CSS 및 JS가 static 디렉토리 아래에있는 표준 설치가 있습니다.Flask 정적 파일 캐시 제어

docs은이 점을 언급하지만 나에게있어이 기능은 작동하지 않습니다. 내가 먼저 암시 두 가지 방법,

class MyFlask(flask.Flask): 
    def get_send_file_max_age(self, name): 
     if name.lower().endswith('.js'): 
      return 60 
     return flask.Flask.get_send_file_max_age(self, name) 

app = MyFlask(__name__) 

하고 모두 영향을 미치지 아니 한

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

을 시도했습니다, 아래 내 JS 파일/정적 여전히 다시 기본 캐시 시간 제한과 함께오고있다

Cache-Control: public, max-age=43200 

감사합니다.

+4

1. 플라스크 개발자 서버 또는 nginx와 같은 http 프록시를 사용합니까? 2.''flask.Flask.get_send_file_max_age (self, name)''대신''return super (MyFlask, self) .get_send_file_max_age (name)''를 사용해야합니다. – Jarus

+0

위의 클래스는 defalt 플라스크 개발 서버를 사용하여 저에게 적합합니다. –

+0

이러한 이유로 (i) (그리고 많은 사람들이 들었던 것에서) 내 정적 파일을 직접 웹 서버 (nginx/apache)에서 사용하게합니다. –

답변

0

webassets에서 캐시 만료를 관리 할 수 ​​있습니다. 개발 및 프로덕션 환경에서 모두 작동합니다.

2

이 문제가있어 온라인에서 답변을 찾지 못했습니다.

그런 다음 내 정적 파일이 플라스크에서 제공되지 않는다는 것을 깨달았습니다. 플라스크는 내 HTML 만 생성합니다. 정적 파일은 내 웹 서버에서 직접 제공됩니다 (Apache는 내 경우 Nginx 또는 다른 것일 수 있습니다).

다음은 Apache 용 지침입니다.

첫 번째는 mod_expires가 모듈을 설치 :

sudo a2enmod expires

그런 다음 .htaccess 파일에 이런 식으로 뭔가를 추가하십시오 Apache manual에서 그것을 구성하는 방법에 대한

ExpiresByType text/css "access plus 1 year" 
ExpiresByType application/javascript "access plus 1 year" 
ExpiresByType image/* "access plus 1 year" 

더 상세.