2016-12-26 55 views
0

我在IIS上發佈了一個Web應用程序。我所有的JS文件都是從我的名爲「Index.html」的靜態html文件中調用的。在這個html文件中,我使用<script>標記調用每個JS文件,爲了管理我們的版本並在沒有用戶歷史記錄和緩存刪除的情況下執行更新,我在每個JS文件的末尾添加了?v = {version}網址如下:.html在HTML中緩存

<script src="./app.js?v=20161226.1" /> 

後多次版本更新,我已經注意到,用戶仍然需要刷新頁面以獲取最新的index.html文件。在搜索chrome的開發工具並查看Developer Tools中的Network部分後,我已經注意到Index.html文件是從緩存中加載的(顯示Network中的「(from cache)」符號) 。

搜索爲中清空.html文件的任何解決方案網站(?因爲沒有V = {}版本爲我的.html文件),我發現後補充道:

<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="pragma" content="no-cache" /> 

ISN」解決了這個問題,我的Index.html文件仍然從緩存中加載。

我每隔兩週更新我的web應用程序,我無法承受自己讓用戶刪除緩存和歷史記錄的每個版本更新,因爲新的和最新的.html文件因爲緩存而被加載。

唯一有用的是刷新(F5),然後重新加載Index.html文件(未從緩存中加載並顯示該Index.html文件的最新版本)。但是如果有人輸入url並將其輸入到URL欄中,Index.html仍然從緩存中加載。

有什麼我做錯了,應該添加任何東西? 有什麼要解決這個問題呢?

謝謝!

+0

按下「Ctrl + Shift + R」是否可以解決它? –

+0

我不希望用戶強制高速緩存刷新。換句話說 - 我沒有最多的技術用戶。這意味着用戶只需按下書籤/輸入url /按鏈接/將鏈接保存在桌面上,然後從那裏打開。 我需要加載最新的.html文件,不管用戶到我的網站如何... –

+0

我理解老闆,我問是否有幫助。如果是這樣的話,你需要確定你的編譯指示... –

回答

0

穿上URL的末尾查詢字符串爲A(良好)黑客以允許您設置HTTP緩存控制標頭緩存很長一段時間不常變化的資源,仍然迫使新版本加載在那些你確實改變它的場合。

如果您經常更新您的HTML,那麼只需設置緩存控制標頭,告訴瀏覽器更頻繁地檢查更新。利用Etags或If-Modified-Since,而不是依賴將來設置的Expires頭。

注意:您必須使用真正的HTTP標頭。 <meta http-equiv>是個不好的笑話。