中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cookie存儲對象信息

發布時間:2020-08-06 03:30:58 來源:網絡 閱讀:724 作者:liuwp1 欄目:編程語言

  最近看到某公司某項目中用于保存多個城市信息到cookie中的方法,該方法的邏輯是按時間順序記錄最近訪問過的三個城市的名字及id,邏輯包插入與含排重。插入與排重的代碼如下:

                 獲取cityid與cityname
   
                if (cityid == Utility.TypeParse.ToInt(CookieHelper.get("fwid1")))
                {
                   
                }
                else if (cityid == Utility.TypeParse.ToInt(CookieHelper.get("fwid2")))
                {
                    //CookieHelper.set("fwname3", CookieHelper.get("fwname2"), 10);
                    CookieHelper.set("fwname2", CookieHelper.get("fwname1"), 10);
                    CookieHelper.set("fwname1", HttpUtility.UrlEncode(cityname), 10);

                    //CookieHelper.set("fwid3", CookieHelper.get("fwid2"), 10);
                    CookieHelper.set("fwid2", CookieHelper.get("fwid1"), 10);
                    CookieHelper.set("fwid1", cityid.ToString(), 10);
                }
                else if (cityid == Utility.TypeParse.ToInt(CookieHelper.get("fwid3")))
                {
                    CookieHelper.set("fwname3", CookieHelper.get("fwname2"), 10);
                    CookieHelper.set("fwname2", CookieHelper.get("fwname1"), 10);
                    CookieHelper.set("fwname1", HttpUtility.UrlEncode(cityname), 10);

                    CookieHelper.set("fwid3", CookieHelper.get("fwid2"), 10);
                    CookieHelper.set("fwid2", CookieHelper.get("fwid1"), 10);
                    CookieHelper.set("fwid1", cityid.ToString(), 10);
                }
                else
                {
                    //沒有相等的
                    CookieHelper.set("fwname3", CookieHelper.get("fwname2"), 10);
                    CookieHelper.set("fwname2", CookieHelper.get("fwname1"), 10);
                    CookieHelper.set("fwname1", HttpUtility.UrlEncode(cityname), 10);

                    CookieHelper.set("fwid3", CookieHelper.get("fwid2"), 10);
                    CookieHelper.set("fwid2", CookieHelper.get("fwid1"), 10);
                    CookieHelper.set("fwid1", cityid.ToString(), 10);
                }

   點評:對于存儲的中文信息需要編碼,否則在部分瀏覽器無法存儲,這是這段代碼可以肯定的地方。但對于同類信息用到了六個cookie,反復的存取降低了代碼的效率,最好存儲在一個cookie中。另外即使考慮到數據量不到采用上面的方法,對于單個cookie最好先獲取cookie中的值到一個變量當中,在需要讀取cookie值的地方利用該變量即可,這樣可以降低對cookie的讀取次數。

   看完了上面的代碼,我們再來看看另外一塊比較合乎規范的代碼:

   /// <summary>
       /// 添加一對名稱地址到cookie中
       /// </summary>
       /// <param name="name">地址名稱</param>
       /// <param name="url">地址url</param>
       public static void AddKeyWord(string name, string url, string detailName="",int i = 0,string shortDomain)
        {
            List<KeyWord> kwLists = new List<KeyWord>();
            
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(url)||name.Trim().ToLower()=="null")
                return;
            HttpContext context = System.Web.HttpContext.Current;
            name = context.Server.UrlDecode(name);
            cookieName = baseCookieName + shortDomain;
            string kw = ClientCookie.Get(cookieName);
            if (name.IndexOf("%") > -1 || name.IndexOf("%") > -1)
            {
                name = context.Server.UrlDecode(name);
                if (name.IndexOf("%") > -1 || name.IndexOf("%") > -1)
                    return;
            }
            name = name.Replace(">", "&gt;");
            name = name.Replace("<", "&lt;");
            name = name.Replace(" ", "&nbsp;");
            name = name.Replace("\"", "&quot;");
            name = name.Replace("\'", "&#39;");
            name = name.Replace("\\", "\\\\");//對斜線的轉義
            name = name.Replace("\n", "\\n");
            name = name.Replace("\r", "\\r");
            if (!string.IsNullOrEmpty(kw))
            {
                try
                {
                    kwLists = JsonConvert.DeserializeObject<List<KeyWord>>(kw);
                }
                catch (Exception ex)
                {
                    LogerHelper.WriteMessegeError(kw, "解析出錯");
                }
                foreach (KeyWord myKey in kwLists)
                {
                    if (name.Trim()==myKey.name.Trim()||myKey.url == url.Trim().ToLower())
                    {
                        return;
                    }
                }
               
                if (kwLists.Count >= 3)
                {
                    kwLists.RemoveAt(0);
                }
              
            }

            kwLists.Add(new KeyWord() { name = name.Trim(), url = url.Trim(), sort = i, detailName = detailName });
      
                ClientCookie.Set(cookieName,JsonConvert.SerializeObject(kwLists),3,shortDomain);
           
            }

   點評:上面的方法將一個序列化的對象集合存儲在cookie當中,可以存儲更多的信息,也更加健壯。在開發過程中要不斷的學習,精益求精,否則即使工作時間再長,也只是增加了干活兒的熟練程度罷了,并不能獲得真正的能力提高。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚顺市| 贞丰县| 通榆县| 岢岚县| 怀宁县| 宜都市| 石门县| 苍南县| 拜城县| 梓潼县| 临沭县| 麻阳| 象州县| 高淳县| 金平| 新昌县| 珠海市| 榆中县| 青阳县| 乌鲁木齐市| 信阳市| 中卫市| 灵丘县| 宝山区| 肥东县| 上杭县| 海门市| 齐齐哈尔市| 鄱阳县| 汤原县| 隆化县| 文水县| 洛南县| 连平县| 高青县| 天长市| 内丘县| 武鸣县| 安徽省| 六盘水市| 南丰县|