用了缓存后:有时候缓存有时候不缓存(频率20%),有的时候点击按钮关刷新页面不执行程序(50%)把缓存删掉一切正常在用户控件中添加
<%@ OutputCache Duration="100000" VaryByParam="page;category" %><asp:DataList.... />this.CachePolicy.Dependency = DependencyFacade.GetRecommendation();//GetRecommendation()代码大致如下   System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString);
            foreach (string tablename in tables)
            {
                SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["SQLConnString1"].ConnectionString, tablename);
                dependency.Add(new SqlCacheDependency(dbName, tablename));
            } 
    

解决方案 »

  1.   

    请问你用的是什么方式提交,Post OR GET
    页面刷新的时候是否为GET提交!
      

  2.   

    你所需要执行的必须是控件事件,这样才可能在POST时触发。如果你执行的是Page_Load中一些根据QueryString之类的判断的代码,那么使用缓存并且GET时就什么也不执行。
      

  3.   

    VaryByParam 属性基于使用 POST 或 GET 发送的名称/值对改变缓存结果
      

  4.   

    除了页面缓存是否可以用其它试一下
    http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx?mfr=true
      

  5.   

    <%@ OutputCache Duration="100000" VaryByParam="none" VaryByControl="Category" %>
    如果用户控件包含名为“Category”的下拉选择框控件,用户控件的输出将基于在该控件中选择的值改变。 
      

  6.   

    <%@ OutputCache Duration = "600" VaryByParam = "*" %>我是这样写的,每次都能缓存
      

  7.   

    用了缓存后:有时候缓存有时候不缓存(频率20%),有的时候点击按钮就刷新页面不执行程序(50%)的概率这种状况大家没碰到过吗protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                if (Request["category"] != null && Request["page"] != null)
                {
                    category = Request["category"];
                    DataBind_List(category, int.Parse(Request["page"]));
                }
                else
                {
                    DataBind_List(category, 0);
                }
                this.CachePolicy.Dependency = DependencyFacade.GetRecommendation();
            }       
        }private void DataBind_List(string category, int page)
        {
            Ds_Commodity = new DataSet();
            Product product = new Product();
            ArrayList arr;        arr = product.Get_Product_Category(category, "Common", page, 8, string.Empty);        ShopList.DataSource = (DataSet)arr[0];
            ShopList.DataBind();
            PageMinute_Url_Page1.Count = ((int[])arr[1])[0];
            PageMinute_Url_Page1.Url = "ShopShow.aspx";
            PageMinute_Url_Page1.Category = category;
            PageMinute_Url_Page1.Number = 8;
            PageMinute_Url_Page1.Index = page;
        }public void AddToCartButton_Click(Object sender, EventArgs e)
        {
            ImageButton itemButton = (ImageButton)sender;
            string arguments = itemButton.CommandArgument;
            char[] parsChar = { '|' };
            string[] addArgs = arguments.Split(parsChar);        DataSet OrderItem;        if (Session["OrderItem"] == null)
            {
                OrderItem = ShopCart.CreateCart();
            }
            else
                OrderItem = (DataSet)Session["OrderItem"];
            ShopCart.AddItem(OrderItem, Convert.ToInt32(addArgs[0]), addArgs[1], Convert.ToDouble(addArgs[2]), Convert.ToDouble(addArgs[3]), Convert.ToDouble(addArgs[4]));
            Response.Redirect("~/Surce/ShopCart.aspx");
        }   
    代码没有问题,这问题让人摸不找头脑
      

  8.   

    访问页面的时候带上参数:
    .aspx?page=0&category=1
      

  9.   

    带上参数就不执行postback,这是为什么?头痛啊
      

  10.   

    错了是:
    不带上参数就不执行postback,这是为什么?头痛啊
      

  11.   

    不会啊My-Blog地址1:http://www.cnblogs.com/nyzfl
    My-Blog地址2: http://blog.csdn.net/nyzfl
      

  12.   

    只要页的缓存版本未到期,就将用它来满足具有相同键/值对的 GET 查询字符串或 POST 参数,而与这些参数传递的顺序无关。由于 GET 查询字符串和窗体 POST 参数区分大小写,因此如果参数值大小写不一致,则 ASP.NET 会将该参数视为与原缓存项不同,并将页的另一个版本输入输出缓存中
      

  13.   

    点击按钮就刷新页面不执行程序   
    page;category 参数没变  参数值大小写不一致,则 ASP.NET 会将该参数视为与原缓存项不同