我一直在擺弄AngularJS一段時間,我遇到了一個問題。
每次對元素進行更改(創建/刪除/更新)時,都會發送請求並將其保存到數據庫中。 問題是我的更改在下次刷新頁面時未加載 - 舊數據作爲服務器的響應發送,而未進行我所做的更改。
我在後端使用.NET MVC,在前端使用AngularJS。
任何幫助,將不勝感激。
謝謝!
編輯:
我有一個理由相信,.NET的問題 - 我重新加載更改的整體解決方案之後。
我一直在擺弄AngularJS一段時間,我遇到了一個問題。
每次對元素進行更改(創建/刪除/更新)時,都會發送請求並將其保存到數據庫中。 問題是我的更改在下次刷新頁面時未加載 - 舊數據作爲服務器的響應發送,而未進行我所做的更改。
我在後端使用.NET MVC,在前端使用AngularJS。
任何幫助,將不勝感激。
謝謝!
編輯:
我有一個理由相信,.NET的問題 - 我重新加載更改的整體解決方案之後。
嘗試這樣:
$http.post({
url: "example.cpm",
cache: false //This comes from jQuery
//etc..
})
無法正常工作 – dark4p
事實上,在概念上正確的方法是在服務器端禁用緩存。原因是你有自定義行爲,你想在每次回發後加載「新鮮」數據。無論何時您通過其他客戶端調用相同的方法或直接訪問URL,您都應該看到最新的數據。下面是示例摘錄如何禁用緩存:
[OutputCache(Duration=0, VaryByParam="*")]
public JsonResult Details()
{
//snip snip
return Json(theResult, JsonRequestBehavior.AllowGet);
}
緩存有時在瀏覽器級別,並且不能強制瀏覽器不從JavaScript緩存。這不是特別的Angular問題。
如果緩存一些html/js文件,你可能會做的是追加時間戳到URL,所以每次你的網址是新的,沒有緩存完成。
你是否在瀏覽器中看到類似這樣的內容,這意味着瀏覽器正在緩存響應,並且你得到的響應不是來自服務器。
此緩存不處於的JavaScript的水平或者說角但瀏覽器緩存。有各種方法可以確保瀏覽器不從服務器響應緩存。
否狀態代碼旁邊沒有(來自緩存) – dark4p
檢查緩存過期的響應標頭。 – Chandermani