假設問題:10分鐘之內只能增加一次(程序的核心)
問題背景:10分鐘之內點擊一個帶資源ID值的鏈接,增加一次瀏覽次數寫入數據庫
可以判斷的條件有: 每點擊一次設置一個session,其值和鍵爲剛纔點擊的資源ID
分析:10分鐘由cookie的過期時間設定(過期了即爲空) 沒過期的時候(不爲空時)增加一次
1次由session的keys屬性(集合類型)是否已經包含(將keys集合添加到泛型列表List<string>,然後調用string暴漏的Contains方法)剛纔的資源ID決定:已經包含,不增加次數;不包含,則增加一次
技巧:cookie和session的鍵都是圈子ID
總結:增加1的情況 { cookie不爲空,session不包含圈子ID ; 判斷前給cookie賦值,判斷後給session賦值 }
protect void UpdateViewNum(string SourceID)
{
List<string> sessionKeys = new List<string>();
for (int i = 0; i < Session.Keys.Count; i++)
{
sessionKeys.Add(Session.Keys.Get(i)); //獲得每個鍵添加到泛型列表中,以調用Contains方法判斷剛纔是否有點擊過
}
Resposne.Cookies[SourceID].Value = SourceID;
Resposne.Cookies[SourceID].Expires = DateTime.Now.AddMinutes(10);//設置cookie過期時間
if (!sessionKeys.Contains(SourceID) && Request.Cookies[SourceID] != null)
{
Session[resGuid] = resGuid;
類的實例.UpdateVisitNum(resGuid);
類的實例.InsertBaseStatistics(……Convert.ToInt32(SourceID));
}
}
如果大家有更好的辦法,請分享;如上面有不妥,請指出