2012-08-16 70 views
3

我把一些文件放在靜態目錄中,這些文件通過一些後端處理保持更新。我使用url_for()將url返回給客戶端。燒瓶url_for()無緩存

但我發現,即使我從靜態目錄中刪除舊文件並重新生成更新的文件,仍然會在客戶端瀏覽器上顯示舊文件的內容。我認爲舊文件已被緩存。

有沒有人知道如何爲url_for()函數設置no-cache?

在此先感謝!

+0

你是正面的嗎?按下鍵盤上的「CTRL-SHIFT-R」強制重新加載頁面。 – Blender 2012-08-16 23:56:21

+0

感謝您的回覆。但我不想重新加載整個頁面。我只是使用Ajax刷新頁面的部分(例如,iframe) – vycon 2012-08-17 00:03:42

+1

如果您使用的是jQuery,請禁用緩存:http://stackoverflow.com/questions/168963/stop-jquery-load-response-from-being-緩存 – Blender 2012-08-17 00:04:43

回答

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/