我正在檢索新聞項目的大名單。這個特定場景中的最佳緩存策略
我想利用這個列表的緩存顯而易見的原因(運行一個多餘的查詢不會做)。
我把這個列表綁定到一箇中繼器上,我已經擴展了這個中繼器來啓用分頁(在頁面之間輕拂導致頁面加載並因此再次檢索列表)。
複雜的是,這些新聞項目也可以通過查詢字符串「年」來查詢日期,該查詢字符串僅在按日期查詢新聞項時才存在。
下面是僞代碼爲我到目前爲止(在這裏粘貼實際的代碼會花費太多時間修整了所有,只是添加混亂位):
if(complete news items list are not cached OR querystring["year"] != null)
{
Int year = queryString["year"] (could be null)
Cache.Add(GetNewsItems(year));
}
else
{
return cached newsItems;
}
的問題是,當新聞項目頁面加載(由於分頁控件的回發)查詢字符串的[year]參數仍將填充,因此將重新執行GetNewsItems。另外 - 即使家庭網址(即沒有查詢字符串)然後導航到 - 實際上仍然有一個緩存版本的新聞項目,所以它不會嘗試和檢索它們 - - 但他們可能會在那裏特定年份因此與「全年」搜索無關。
我是否添加新的緩存條目來標記最近一次搜索的結果? 我需要考慮什麼來緩存超時? 如果需要的話,我可以添加一個新的查詢字符串(最好不要) - 這會解決問題嗎?
羅賓斑。爲此非常感謝!! –