2016-09-20 29 views
0

我有問題。在舊的項目,我目前正在對我發現這個代碼:Javascript src帶問號

<script type="text/javascript" language="Javascript" src='<%= Page.ResolveUrl("~/javascripts/CardConnectorManager.js?2016071203")%>'></script> 

我:

  • /javascripts/CardConnectorManager.js

,但沒有

  • /javascripts/CardConnectorManager.js?2016071203

那個問號正在做什麼,爲什麼有人寫這樣的事情? 也許這個文件只存在於某些bulid東西上的服務器上?

+1

相關:[Cachebuster實現中的差異](http://stackoverflow.com/q/22665311/464709)。 –

+1

這一個可以幫助你:http://stackoverflow.com/questions/27914767/is-it-necess- to-re-rename-js-files-to-invalidate-cache –

回答

3

David R's answer是相當不錯的,但我想補充一點信息:

通常有緩存破兩種方法:

  1. 重命名文件;
  2. 在文件末尾添加一些散列。

對於某些情況,第一種方法可能會更好(see this question),但可能會更痛苦。你將如何保持這個文件在版本控制?如果有很多像這樣的文件呢?

第二種方法更容易。您只需添加如app.js?_=<some_string><some_string>可以是任何:時間戳,內部編號或只是一個隨機字符串。

對於這種方法,您可能會發現使用自動工具如gulp-rev更好。

更新:老實說,爲項目中的所有靜態版本提供版本號會更好:html,images,css,js。 有很多工具可以自動進行此操作。

或者,有一些技術,例如角度開發人員有$templateCache服務,它允許開發人員將所有項目的html(不包括index.html)放在一個js文件中。

1

它指的是相同的CardConnectorManager.js文件。

爲防止緩存,在調用調用.js文件時,後綴日期/時間戳是開發人員的常見做法。

希望這會有所幫助!

1

基本上以「?」結尾的JS文件(問號)後跟一些隨機數,用於強制刷新該特定文件的瀏覽器緩存。瀏覽器將該網站下載的js文件存儲在緩存中,以強制刷新該文件,後面加上隨機數。

在你的例子中,如果你仔細觀察,指定的數字只是日期時間戳ie - 數字2016071203代表 - 2016-07-12 03.如果你在服務器上更新了這個文件,你只需要更新新的時間戳(您可以使用任何隨機數字)。時間戳通常用於避免重複的號碼。

因此,下次只要在該JS文件中進行更改,只需更新該號碼,以便所有訪問此文件的客戶端都將獲得更新的JS代碼,而不是緩存的代碼。

0

問號(?)只是爲了處理緩存。它每次在瀏覽器上刷新文件。我們也使用相同的技術刷新動態生成的圖像。