using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Caching;
namespace SpaceTime
{
/// <summary>
/// VsCache 的摘要说明
/// </summary>
public class STCache
{
public STCache()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private static void onRemove(string strIdentify, object userInfo, CacheItemRemovedReason reason)
{
}
//建立回调委托的一个实例
CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
/// <summary>
/// 创建缓存对象(默认24小时缓存)
/// </summary>
/// <param name="name">键名</param>
/// <param name="value">键值</param>
public static void CreateCache(string name, object value)
{
CreateCache(name, 24, value);
}
/// <summary>
/// 创建缓存对象(指定缓存小时)
/// </summary>
/// <param name="name">键名</param>
/// <param name="hours">缓存时间(小时)</param>
/// <param name="value">键值</param>
public static void CreateCache(string name,double hours, object value)
{
//建立回调委托的一个实例
CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
//以Identify为标志,将userInfo存入Cache
HttpContext.Current.Cache.Insert(name, value, null,
System.DateTime.Now.AddHours(hours),//当前指定为24小时,7*24=168
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
callBack);
}
/// <summary>
/// 读取缓存对象结果
/// </summary>
/// <param name="name">键名</param>
/// <returns></returns>
public static object GetCache(string name)
{
if (ExistCache(name))
{
return HttpContext.Current.Cache[name];
}
else
{
return null;
}
}
/// <summary>
/// 判断存储的"一键一值"值是否还存在(有没有过期失效或从来都未存储过)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static bool ExistCache(string name)
{
if (HttpContext.Current.Cache[name] != null)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 删除缓存数据
/// </summary>
/// <param name="name"></param>
public static void Remove(string name)
{
try
{
HttpContext.Current.Cache.Remove(name);
}
catch (Exception exp)
{
//
}
}
}
}
private void BindItemCats()
{
try
{
int pageIndex = DNTRequest.GetInt("PageNo", 1);
List<TaobaokeItem> items = new List<TaobaokeItem>();//定义返回商品泛型对象
string totalPageNum = "0";
if (!SpaceTime.STCache.ExistCache("ItemList-" + cid + "_" + pageIndex))
{
TopXmlRestClient client = new TopXmlRestClient("http://gw.api.taobao.com/router/rest", "12150539", "f1e413524f3bec524c7677aba2ab43f3");
DynamicTopRequest req = new DynamicTopRequest("taobao.taobaoke.items.get");
req.AddTextParameter("fields", "iid,num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,seller_credit_score,item_location,volume,shop_click_url,total_results");
req.AddTextParameter("nick", "andyli783");
if (cid != 0)
{
req.AddTextParameter("cid", cid);
}
req.AddTextParameter("keyword", DNTRequest.GetString("key"));
req.AddTextParameter("page_no", pageIndex);
req.AddTextParameter("page_size", 18);
req.AddTextParameter("start_price", DNTRequest.GetString("sc"));
req.AddTextParameter("end_price", DNTRequest.GetString("ec"));
req.AddTextParameter("area", DNTRequest.GetString("ac"));
req.AddTextParameter("sort", DNTRequest.GetString("sort"));
string rsp = client.GetResponse(req);
Parser parser = new Parser();//定义解析XML对象
parser.XmlToObject2<TaobaokeItem>(rsp, "taobaoke_items_get", "taobaoke_items/taobaoke_item", items);
SpaceTime.STCache.CreateCache("ItemList-" + cid + "_" + pageIndex, 24, items);
XmlDocument xml = new XmlDocument();
xml.LoadXml(rsp);
XmlElement root = xml.DocumentElement;
XmlNode xn = root.SelectSingleNode("//total_results");
if (xn != null)
{
SpaceTime.STCache.CreateCache("ItemListPage-" + cid + "_" + pageIndex, 24, xn.InnerText);
totalPageNum = xn.InnerText;
}
}
else
{
items = SpaceTime.STCache.GetCache("ItemList-" + cid + "_" + pageIndex) as List<TaobaokeItem>;
totalPageNum = SpaceTime.STCache.GetCache("ItemListPage-" + cid + "_" + pageIndex).ToString();
}
hrrPage.RecordCount = int.Parse(totalPageNum);
hrrPage.LinkPageUrl = Request.Url.ToString().Trim();
dlItemList.DataSource = items;//&sc={2}&ec={3}
dlItemList.DataBind();
if (items.Count < 1)
{
wushuju = "<div class=\"tijiao\">很抱歉,没有找到与“<strong><font color=\"#FF0000\">" + DNTRequest.GetString("key") + "</font></strong>”相关的宝贝</div>";
hrrPage.Visible = false;
}
else
wushuju = "";
}
catch (Exception)
{
Utils.ShowAlert("类型和关键字必须有一个", Page);
}
}