2013-01-02 37 views
0

我遇到了一個我正在開發的網站/應用程序的問題。這實際上是一個共同原因的兩個問題。我正在使用jQuery,jQueryMobile和PHP。jQuery:緩存阻止頁面正確加載

  1. 我使用一個用戶名和密碼在PHP會話和用戶鍵入登錄系統,然後記錄。在接下來的頁面,有檢查,以確保它們被登錄爲授權用戶(如果他們只是使用URL)和一個「註銷」按鈕。如果他們註銷並嘗試通過URL訪問該頁面,則拒絕訪問,但是當按下「註銷」將其帶入登錄表單並且如果他們使用瀏覽器的後退按鈕,它將使其返回到「已登錄「頁面,因爲它被緩存。

  2. 我有一個表單提交onChange下拉表單將做一些在PHP中的東西,然後將它們鏈接到另一個頁面的頭(「location:site/page.php」)。如果用戶按下瀏覽器的「後退」按鈕,則頁面將從緩存中加載,並且當前下拉值將被設置爲它們之前選擇的值。現在,要再次觸發相同選項上的onChange事件,他們必須將下拉列表更改爲默認的「選擇一個」選項,然後返回到他們想要的選項。

這兩個問題似乎都來自緩存。如果有一個有效的解決方案,我會喜歡這一點,但如果我需要關閉緩存,我明白這將影響速度,現在可以。我試圖通過使用這個關閉緩存:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> 
    <link rel="stylesheet" href="/css/themes/CLIPTheme.css" /> 
    <script language="text/javascript"> 
     $(document).bind("mobileinit", function() { 
      $.mobile.ajaxEnabled = false; 
     }); 
    </script> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script> 
    <script> 
    $.ajaxSetup ({ 
      // Disable caching of AJAX responses 
      cache: false 
    }); 
    </script> 

...但那是行不通的。如果有人能幫助我,我會非常感激!

回答

0

我並不完全追蹤您的問題的原因,但我發現Safari的緩存非常積極。考慮這個:https://stackoverflow.com/a/13365356/64262

你不包括你的ajax調用,但我需要有時訴諸於此。

$.post("/MyService/", { timestamp: new Date().getTime() }, ...)

我可以給自己的權利?