• 设置缓存失效的三种方法


    案例:

    效果当在规定时间内访问一个网页时,网页上的内容咱是保持不变,时间一过,网页上的内容就会重新访问服务器,获取数据。

    前台:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="缓存.WebForm1" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>

    后台:

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    if (Cache["news"] == null)
                    {
                        DataTable dt = LoadData();


                        //将缓存和外部文件关联,外部文件以改变,缓存立即失效
                        //Cache.Insert("news", dt, new CacheDependency(@"d:\cache.txt"));


                        //为缓存设定一个绝对时间,让缓存在这个时间到的时候失效
                        //Cache.Insert("news", dt, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero);

                       //为缓存设置一个相对时间,让缓存在这个时间到的时候失效
                        Cache.Insert("news", dt, null, DateTime.MaxValue, TimeSpan.FromSeconds(30));

                       //简单的设置一个缓存
                        Cache.Insert("news", dt);
                        this.GridView1.DataSource = dt;
                        this.GridView1.DataBind();
                    }
                    else
                    {
                        DataTable dt = Cache["news"] as DataTable;
                        this.GridView1.DataSource = dt;
                        this.GridView1.DataBind();
                    }
                }
            }


            private DataTable LoadData()
            {
                string strcon = ConfigurationManager.ConnectionStrings["Sqlserver"].ConnectionString;
                SqlConnection conn = new SqlConnection(strcon);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "pro_FenYe";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@pagesize",500);
                cmd.Parameters.AddWithValue("@pageindex",1);
                DataTable dt = new DataTable();
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(dt);
                cmd.Dispose();
                conn.Dispose();
                return dt;
            }
        }

    web.config中的设置时间的代码:

      <system.web>
            <compilation debug="true" targetFramework="4.0" />
          <caching>
            <sqlCacheDependency pollTime="500">
              <databases>
                <add name="sqldependency" connectionStringName="Sqlserver"/>
              </databases>
            </sqlCacheDependency>
          </caching>
        </system.web>

  • 相关阅读:
    Redission源码
    RocketMQ 的heartBeat在做哪些事情
    Netty调用channel.close方法和 客户端所在Java进程正常/异常关闭的细节
    RocketMQ源码之 事务消息的回调方法应该怎么写?
    spring 源码
    多线程同步工具ReentrantLock CountDownLatch CyclicBarrier Semaphore join
    RocketMQ 的事务消息
    RocketMQ 怎样解决为了 实时拉取消息 而不得不一直轮询的问题
    .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
    [转]如何不格式化、不丢失数据修复内存卡
  • 原文地址:https://www.cnblogs.com/duanlinlin/p/3134501.html
Copyright © 2020-2023  润新知