2014-06-18 151 views
0

我一直在擺弄AngularJS一段時間,我遇到了一個問題。

每次對元素進行更改(創建/刪除/更新)時,都會發送請求並將其保存到數據庫中。 問題是我的更改在下次刷新頁面時未加載 - 舊數據作爲服務器的響應發送,而未進行我所做的更改。

我在後端使用.NET MVC,在前端使用AngularJS。

任何幫助,將不勝感激。

謝謝!


編輯:

我有一個理由相信,.NET的問題 - 我重新加載更改的整體解決方案之後。

+0

檢查緩存過期的響應標頭。 – Chandermani

回答

0

嘗試這樣:

$http.post({ 
    url: "example.cpm", 
    cache: false  //This comes from jQuery 
    //etc.. 
}) 
+0

無法正常工作 – dark4p

1

事實上,在概念上正確的方法是在服務器端禁用緩存。原因是你有自定義行爲,你想在每次回發後加載「新鮮」數據。無論何時您通過其他客戶端調用相同的方法或直接訪問URL,您都應該看到最新的數據。下面是示例摘錄如何禁用緩存:

[OutputCache(Duration=0, VaryByParam="*")] 
public JsonResult Details() 
{ 
    //snip snip 
    return Json(theResult, JsonRequestBehavior.AllowGet); 
} 
0

緩存有時在瀏覽器級別,並且不能強制瀏覽器不從JavaScript緩存。這不是特別的Angular問題。

如果緩存一些html/js文件,你可能會做的是追加時間戳到URL,所以每次你的網址是新的,沒有緩存完成。

+0

我很確定這不是緩存的JavaScript - 我使用Chrome開發人員工具從我的請求響應中記錄輸出(網絡選項卡),並且不會從後端。 – dark4p

+0

然後它肯定是罪魁禍首的瀏覽器緩存......你可以禁用它,一種方法可能是添加時間戳到URL,正如我所提到的。 –

+0

如果我從後端得到的響應不包含更改,JS怎麼會被緩存呢? js代碼根本無法識別這些更改(因爲它們沒有被返回)並且按照它的原樣工作。它始終來自開發工具,因此無法進行瀏覽器緩存。 – dark4p

0

你是否在瀏覽器中看到類似這樣的內容,這意味着瀏覽器正在緩存響應,並且你得到的響應不是來自服務器。

enter image description here

此緩存不處於的JavaScript的水平或者說角但瀏覽器緩存。有各種方法可以確保瀏覽器不從服務器響應緩存。

+0

否狀態代碼旁邊沒有(來自緩存) – dark4p