2012-10-12 69 views
1

瀏覽器和代理緩存將URL用作緩存鍵。 在pjax中,URL用於請求部分Pjax頁面和整個頁面,因此這兩個響應都將緩存在相同的密鑰下。這顯然會導致錯誤,因爲部分可能會被加載而不是整個頁面,反之亦然。使用pjax進行HTTP緩存(jQuery-pjax)

如何解決它?

我能想到的唯一的事情就是爲url添加一個pjax標籤。 pjax是否提供了一個內置的方法來完成這個任務?

謝謝!

p.s 我正在使用Rails,以防萬一有人在Rails中做了額外的優雅方法。

回答

2

jquery-pjax_pjax=true附加到XMLHttpRequest中的網址。

另一種方法是每個URL只有一個頁面。

這可以通過只發送完整頁面和使用fragment選項jQuery-pjax來實現。

更靈活的方法是隻發送最小的頁面並使用AJAX添加所有共享網站內容 - 頁面橫幅,導航,廣告等。大多數AJAX僅適用於初始頁面加載,此後pjax接管。這是HTMLDecor的方法。

+0

肖恩,讓我們看看我的HTMLDecor是否正確。除了2頁/ url的問題,與PJax的主要區別在於HTMLDecor也允許修改標題內容。除此之外,他們也做同樣的事情 - 指定「裝飾」/佈局的方法稍有不同。 – EugeneMi

+0

此外,HTMLDecor看起來像一個很好的解決方案(我喜歡這個事實,你可以有頁面指定的CSS/JS,並且你只有1頁/網址),但我略微擔心,我沒有看到的事實它在別處被使用。我時間緊張,不想處理稍後出現的不可預測的事情。你知道任何使用它的網站嗎? – EugeneMi

+0

我對[我的博客](http://meekostuff.net/blog/)使用HTMLDecor。我不知道有其他人使用它。你一定會得到更多使用jquery-pjax的支持(它已經做到了你想要的)。爲了記錄,HTMLDecor比jquery-pjax功能更強大,並且它不使用jquery,因此總的JS小於10KB。 –

0

Rails 4.0現在配備了Turbolinks。 Turbolinks與pjax非常相似,不同之處在於它從服務器加載整個頁面,然後更新頁面的標題而不是重新加載它。不需要對服務器端進行修改 - 服務器始終返回完整頁面。 這使HTTP緩存變得微不足道。