簡體   English   中英

使用jQuery remove()和緩存頁面(Rails后端)

[英]Using jQuery remove() with cached pages (Rails backend)

我正在使用帶有Rails 3后端的jQuery,我有以下場景:

  1. 用戶看到他們的帖子發表評論並希望將其刪除
  2. 用戶單擊刪除按鈕並從數據庫中刪除注釋
  3. jQuery使用remove()從DOM中刪除項目,作為對上面第2步的AJAX成功響應
  4. 用戶導航到其他頁面
  5. 用戶點擊后退按鈕返回帶有注釋的頁面
  6. 舊評論仍然存在,即使它已從服務器和DOM中刪除

這個場景中的注釋顯然是由瀏覽器緩存的,所以即使它之前被刪除它也會顯示(並且它在服務器上也不存在)。

當用戶點擊后退按鈕時,如何防止注釋(或從DOM中刪除的先前緩存對象)出現?

順便一句:請不要說,“不要緩存任何頁面”:)這不是一個選項。

答案一:如果用戶使用后退按鈕,當他們看到過去的事情時,他們不應該感到驚訝。

答案二:它有點沉重,但您可以在$(document).ready()中嘗試ajax調用來檢查過時的內容。 我不確定那會起作用。 如果沒有,您可以設置ping到服務器的間隔,以便仔細檢查屏幕上是否有過時的內容。 (我的表現很好,平均頻率為7秒)

我不認為有這么做的非重手方式(除了防止緩存;)

我不知道什么時候它依賴於瀏覽器,它可能會破壞你的RESTful路由,但你可以做的是,發布一個PUT / POST到帖子來源的同一個 URL,並在AJAX響應中禁用緩存(使用Cache-Control標頭)。 它應該在瀏覽器的緩存中使此URL無效,因為瀏覽器通常不使用HTTP謂詞進行區分。

如果您正在使用rails頁面緩存,則應在“創建”,“更新”和“刪除”操作上清除它。 請參閱鏈接了解更多詳情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM