2010-07-02 123 views
0

我有一個頁面,我從數據庫中提取數據集,幾千條記錄。我在頁面加載時得到它並將其存儲在緩存中。每次在頁面上執行操作時,我都會檢查緩存,看它是否仍然存在,如果沒有,請再次獲取它(20分鐘到期);相當典型的設置。我正確使用緩存嗎?

當我運行頁面時,初始數據加載正常,並且默認的RowFilter應用於數據。當我改變一個下拉(更改的RowFilter)的值,頁面掛起了一會兒,然後返回一個JavaScript錯誤:重複

Line: 80772370 (yes, thats line 80 million...)
Char: 17
Error: Syntax error
Code: 0
URL: -the url of the page I'm on-

此錯誤EXACTLY 20倍。

當我重新運行該頁面和呈現該錯誤的操作時,我得到一個不同的行號(例如,在我發佈上述消息後下一次運行它時,該行在80718666處),正好再次20次。

現在幾個曲線球:

  1. 當我使用會話來存儲數據,而不是高速緩存我有完全相同的問題。
  2. 我在開發環境中沒有這個問題(這發生在QA中)。每個環境的web.config幾乎相同,但它們之間的主要區別在於QA使用與其自身分開的sessionState服務器。這就是爲什麼我首先從Session變量移動到緩存的原因。
  3. 當搜索條件完全沒有返回結果時,它按照原樣執行(不顯示結果)。

現在這並不完全是我最好的一週,所以也許我錯過了一些大事,但我可以使用一些指導。

感謝SO社區。

+0

爲什麼你需要從數據庫中提取數千條記錄? – 2010-07-02 12:20:18

+0

是的,因爲這是需要的數據... – 2010-07-02 12:34:04

+0

你使用的UpdatePanel? – Aristos 2010-07-02 13:31:03

回答

1

如果你使用UpdatePanel,刪除它看看是什麼真正的錯誤是因爲現在錯誤隱藏在一個JavaScript返回字符串,在你提到的位置。

後你發現自己的錯誤,帶來再次在UpdatePanel。

我可以假設錯誤是一個已經被緩存的空對象/控件,並且你忘記檢查它是否爲空。

當您緩存您的網頁上的部分,和控制,那麼你需要檢查他們在你的背上代碼,如果他們是空之前使用它們。

+0

嗯,我沒有得到任何錯誤...你的想法?我正在檢查緩存中的空值。顯然,簡單的答案不是使用該更新面板,但我寧願保留在那裏。 – 2010-07-02 14:22:47

+0

@Honus僅移動updatepanel以查找錯誤,然後再將其放回。你也可以在代碼中使用try catch來更新面板和日誌錯誤。 – Aristos 2010-07-02 14:50:25

+0

雖然沒有錯誤,那就是事情。 – 2010-07-02 16:20:26