2012-08-16 6 views
3

일부 파일은 정적 디렉토리에 저장하고 이러한 파일은 일부 백 엔드 처리로 계속 업데이트됩니다. 클라이언트 측에 URL을 반환하기 위해 url_for()을 사용했습니다.Flask url_for() no cache

그러나 정적 디렉토리에서 이전 파일을 제거하고 업데이트 된 파일을 다시 생성하더라도 클라이언트 브라우저에 이전 파일의 내용을 계속 표시합니다. 나는 오래된 파일이 캐싱 된 것 같아.

아무도 url_for() 기능에 대해 no-cache를 설정하는 방법을 알고 있습니까?

미리 감사드립니다.

+0

긍정적입니까? 강제로 페이지를 다시로드하려면 키보드에서'CTRL-SHIFT-R'을 누르십시오. – Blender

+0

답장을 보내 주셔서 감사합니다. 하지만 전체 페이지를 새로 고침하고 싶지 않습니다. 페이지의 부품 (예 : iframe)을 새로 고치는 데 아약스를 사용했습니다. – vycon

+1

jQuery를 사용하는 경우 캐싱을 사용하지 않도록 설정하십시오. http://stackoverflow.com/questions/168963/stop-jquery-load-response-from-being- 캐시 된 – Blender

답변

1

얼마전에 나는 blog post이라고 적었습니다. 가끔 당신이 새로운 릴리스를해서 모든 캐싱을 사용하지

def send_url(method): 

    response = app.make_response(url_for(method)) 

    response.headers.add('Last-Modified', datetime.datetime.now()) 
    response.headers.add('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0') 
    response.headers.add('Pragma', 'no-cache') 

    return response 
0

:

는 기본적으로, 당신은 다음 반응에 대한 몇 가지 추가 헤더를 설정 보낼 응답을 작성해야하고 응답을 보내 정말 좋은 연습이 아닙니다. css와 js를 캐싱하면 성능이 크게 향상됩니다.

좋은 사이트는 파일의 타임 스탬프를 리소스 URL에 추가하는 것입니다. 예를 들어 플라스크 (Flask)에서 투명하게 처리하는 방법은 다음과 같습니다. http://flask.pocoo.org/snippets/40/

관련 문제