日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

谷歌浏览器文件下载了缓存的问题与解决方案

發布時間:2023/12/10 HTML 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谷歌浏览器文件下载了缓存的问题与解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:最近寫了一個文件下載的接口,我測試下能下載文件后就提交了到了生產,然后然后使用下載功能的小伙伴找到我說下載有bug,我明明修改了文件內容重新下載后還是以前的數據,嚇得我趕緊去看代碼,終于讓我發現了問題。

一、基礎框架

后端:python3.8 + flask + flask-restful

前端:vue

二、場景:有一個功能界面需要上傳下載文件,且支持更改新的上傳文件

文件上傳:通過request.files 獲取到文件流,os.makedirs創建文件存儲目錄, file.save(filepath)保存,另外保存一條文件上傳記錄,涵蓋文件名,文件保存路徑等等,貌似一切都ok

文件下載: 通過前端界面獲取到當前記錄的文件名,通過文件名查找文件信息,找到文件目錄filepath

response = make_response(send_from_directory(filepath, fullflname, as_attachment=True))
獲取到response對象,返回文件流

三、當修改新的上傳文件為B時,點擊下載 還是獲取的之前文件A,清理瀏覽器緩存后,點擊下載,文件為B,這才是正確的

四、經過一系列資料查詢,得知,谷歌會對文件下載進行緩存的

解決方法: 在下載獲取到response對象后,增加headers 設置 cache-controll = “no-store“

重新下載文件查看接口請求頭發現問題已經解決了

五、Cache-Control詳解

服務器標記資源有效期使用的頭字段是“Cache-Control”,里面的值“max-age=43200”就是資源的有效時間,相當于告訴瀏覽器,“這個頁面只能緩存 43200秒,之后就算是過期,不能用。
no-cache — 強制每次請求直接發送給源服務器,而不經過本地緩存版本的校驗。這對于需要確認認證應用很有用(可以和public結合使用),或者嚴格要求使用最新數據 的應用(不惜犧牲使用緩存的所有好處)。
Pragma 當”no-cache”出現在請求消息中時,應用程序應當向原始服務器推送此請求,即使它已經在上次請求時已經緩存了一份拷貝。這樣將保證客戶端能接收到最權威的回應。它也用來在客戶端發現其緩存中拷貝不可用或過期時,對拷貝進行強制刷新。
max-age>0:直接從游覽器緩存中 提取。
max-age<=0:向server 發送http 請求確認 ,該資源是否有修改,有的話 返回200 ,無的話 返回304。

總結

以上是生活随笔為你收集整理的谷歌浏览器文件下载了缓存的问题与解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。