2009-11-10 82 views
1

我有一個很大的問題:請參閱下面的示例鏈接。我的應用程序當前附加到所有「資源/鏈接」會話ID。偶然我或多或少的偶然發現了這看在Firefox的緩存:會話ID和瀏覽器緩存=>瀏覽器是否足夠智能去除SessID?

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C 

我最大的問題是,像上面導致事實的URL網址,則任何緩存頭(我用的Cache-Control與幾年)會變得或多或少無用,因爲會話ID會使每個請求都是唯一的?

(==>我的意思是說,一個新的會話ID在30分鐘後被分配,而緩存最有可能在此期間纔有效,在這段時間之後,會生成一個新的會話ID,客戶端上的緩存內容,其URL中的SessionID = url更改,因爲它現在具有新的sessionID。)

=>瀏覽器是否智能以找出要緩存的資源是:

http://localhost:8080/jquery-ui-1.7.2.custom.css 

,而不是:

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C 

或者url中的sessionId會導致緩存在瀏覽器中或多或少被禁用的事實?

非常感謝! jan

回答

3

這不是瀏覽器是否足夠智能的問題。 W3 standard for HTTP指出應該分開緩存不同的URL。因此,瀏覽器在觀察完整URL時是正確的,包括GET參數,例如緩存中的會話ID。

你不應該將會話ID追加到任何東西這是靜態的(比如你的樣式表)。

+0

你好本,謝謝你的回答和鏈接。我GOOGLE了,但W3文件沒有出現。它是一個很好的文件解釋,正是我所期待的。所以謝謝你的回答。 – jan 2009-11-10 15:11:07

+0

我最近回答了這個問題:http://stackoverflow.com/questions/1674493/back-button-browser-behavior/1674525#1674525所以我有方便的鏈接:D – 2009-11-10 15:21:16

2

你是對的 - 瀏覽器不夠聰明,而且一個變化的URL會非常有效地否定緩存。

爲什麼你有第一個地方的會話ID?如果資源不依賴於會話,則從URL中刪除會話ID,這將解決您的問題。如果資源依賴於會話,那麼您已經擁有了所有需要的資源,因爲一個會話不應該使用另一個會話中的資源。

+0

你好Vilx,非常感謝你的答案。 – jan 2009-11-10 15:11:43