2011-09-02 53 views
-2
<link rel="/style/style.css"/> 

所以這是我的index.html。如果我使用git,我該如何實現緩存攔截器?

如果我保存它,我想自動執行的style.css?版本= 3 ......所以這個蕭條緩存

什麼是做到這一點的最簡單的方法?

+3

git在哪裏適合? – tpower

+1

javascript在哪裏適合? –

+1

模板適合哪裏? –

回答

-7

使用JavaScript,你可以只寫

<script type="text/javascript"> 
    document.write('<link rel="stylesheet" type="text/css" href="style.css?version=' + (new Date()).getTime() + '">'); 
</script> 

,如果你使用任何服務器端腳本可以更容易完成。類似於`

<link href="/style/style.css?version=<?php echo time() ?>">` 
+7

這將強制更新每個請求。理想情況下,只有在文件發生變化時緩存攔截器纔會生效,這就是爲什麼用戶要求使用git修訂標籤(這是我尋找的)。不過,如果您確實需要重新加載每個請求,請不要隨意使用,這樣做毫無意義。更好的選擇是使用時間,因爲它總會不同。隨機可以產生重複,即使不太可能,但仍然使用時間要簡單得多。在JavaScript中,這是'(new Date())。getTime()'和簡單的'time()'在PHP中。 – six8

4

如果您使用git,則可以使用git describe --tags --always獲取當前版本。

如果在PHP中,你可以這樣做:

$currentVersion = `git describe --tags --always` 

的然後我們$ CURRENTVERSION緩存阻止宏:

<link href="/style/style.css?version=<?=$currentVersion?>"> 

當然:

  • 應該緩存命令的結果,至少一分鐘,以防止對git com的密集調用mand!
  • 確保該命令在GIT目錄推出

它將工作,即使在你不使用標籤(感謝--always開關),但它是更好的使用它們,所以$ CURRENTVERSION會像v2.1.3-c1a2f3e