2014-10-07 79 views
8

我一直在使用使用「曲奇衝突」谷歌瀏覽器預渲染

<link rel="prerender" href="/path" /> 

但拉泰什更新後,當我嘗試使用[chrome://net-internals/#prerender]調試Chrome的預渲染功能。它顯示預渲染由於"Cookie Conflict"而中止。

我試圖調試,以確保如果一些Ajax調用是在加載頁面後更改cookie,但沒有找到。 prerender仍然中止。它過去與以前的chrome版本配合良好。

+0

我認爲它是一個已知的bug。請查看:https://groups.google.com/a/chromium.org/forum/#!msg/prerender/vcjoQmwwpM0/H0Q17LS1qW8J – newDevGeek 2014-10-29 17:47:52

回答

1

你所看到的是由於cookie衝突。

例子:

假設a.com使用Cookie 問候= ...來表示問候用戶想用的歡迎。
假設問候語設置爲「hello」。 我們prerender a.com/a.html,呈現「問候語=你好」。當服務器生成一個.html,時,它將從正在被渲染的網頁上的cookie發出'hello'

現在,顯示預渲染之前,假設在a.com更新問候「問候=你好」 接下來其他頁面,假設用戶導航到a.com/a.html。預渲染將被交換。但是,它看到了「問候」cookie的不同版本,而不是它現在的值。因此,該網頁仍然顯示'hello',而不是(更新)'howdy'。

在內部,它會跟蹤預渲染(無論是在HTTP標頭還是javascript中)暴露的所有Cookie。如果在顯示預渲染之前修改了其中的任何內容,則會使預渲染無效。

這種無效是你觀察到的。