2010-09-02 111 views
2

快速問題:爲什麼drupal在頁面頭部的linkscript標記中的srchref屬性末尾添加字符?我有這個:頭標記中src/href屬性末尾的奇怪字符

<link type="text/css" rel="stylesheet" media="all" href="/ste_thecle/modules/views/css/views.css?n" /> 

並且每個樣式表和加載的腳本都是一樣的。我無法弄清楚爲什麼這樣做,我想也許這就是爲什麼我的主題是在IE中搞砸的原因...

謝謝。

+1

原因即混亂你的CSS可能是因爲你沒有壓縮它們。訪問admin/settings/performance來壓縮它們。否則你會有很多的CSS,即只支持31個樣式表的限制。 – 2010-09-02 12:15:44

回答

5

每次瀏覽器加載外部JavaScript文件時,瀏覽器都會將文件放入其緩存中。 這樣,您第二次重新加載頁面並嘗試加載相同的外部文件時,瀏覽器將從緩存中使用它。

如果您對JavaScript文件進行更改並嘗試重新載入頁面,則更改將不會生效,因爲瀏覽器將使用緩存文件。

爲了防止這種行爲,Drupal會在JavaScript文件的URL末尾添加一個隨機值。這樣瀏覽器會將該文件視爲新文件,並且不會在瀏覽器緩存中使用該文件。

一個好的做法是在生產階段刪除此功能,以便頁面加載速度更快。

1

這些東西被添加爲了強制緩存控制。它與IE中搞砸的主題無關。

+0

「強制緩存控制」是什麼意思? – 3rgo 2010-09-02 09:03:35

+0

瀏覽器的緩存控件。 – tamasd 2010-09-02 10:24:55

1

因爲每次都會添加一個不同的查詢字符串(?n),您的瀏覽器會'認爲'該資源不同,因此它會重新加載文件而不是從緩存中檢索它。通過這樣做,Drupal可以確保您不會看到自緩存後已更改的陳舊文件。