请教缓存的问题

smartcoach 2013-07-28 09:09:14
第一,页面生成后都会生成一个缓存。。服务器会生成一个缓存,客户请求页面的时候是不是先从缓存里面取出页面,并不是每次都连接数据库取数据
第二、在page的生命周期里有一个public Cache Cache ,这个到底做了什么,是不是在这里就去页面取得了缓存,也就是后面进行的控件的一系列操作都是从这里拿到的?
第三、可不可以通过url传给服务器里面一个cache?

谢谢大家了
...全文
190 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jss122414092 2013-07-29
  • 打赏
  • 举报
回复
上面说的应该都对,但楼主估计一时看不明白,我简单易懂的说下(只说楼主的第三个问题): 首先 Cache["缓存的key"]=返回一个要缓存的信息(如类什么) 假如我网站访问www.baidu.com/?Cache=123;也就是把缓存的key值(123)放在url后面作为参数 我后置代码(.cs文件)获取这个缓存key值也就是123 if(Cache["123"]==null){ //如果第一次加载页面说明没有缓存 Cache["123"]=从数据库查询要缓存的内容; }else{ //在此访问已经存在存在缓存 某个类,或字符串=Cache["123"];//你看这样就没有查找数据库,而是从缓存里调用 } 楼主明白了不,不明白我也无能为力了。
我是地摊小贩 2013-07-29
  • 打赏
  • 举报
回复
引用 13 楼 zgxASD 的回复:
每一个KEY值是你自己定义的,你可以通过在url中写入key值作为参数在后台接收下就行了呀。。。 首先:当缓存失效的时候,页面是不会有去缓存数据的,所以第一步要做的就是去判断缓存是否存在。。不存在的话就去写入缓存。

public static void GetOrInsertCache(string key, object value, double cacheTime)
        {
           //判断key值对应的缓存存在否
            if (HttpRuntime.Cache.Get(key) == null)
            {
               //写入缓存,唯一标识key值,缓存内容value,缓存失效时间cachetime(我这里用的是小时)
               HttpRuntime.Cache.Insert(key, value, null, DateTime.Now.AddHours(cacheTime), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
            }
            else
            {  
               //得到缓存数据
               string GetCacheValue=HttpRuntime.Cache.Get(key);
            }
        }
这是最简单的一种缓存方式。。。。。
我是地摊小贩 2013-07-29
  • 打赏
  • 举报
回复
每一个KEY值是你自己定义的,你可以通过在url中写入key值作为参数在后台接收下就行了呀。。。 首先:当缓存失效的时候,页面是不会有去缓存数据的,所以第一步要做的就是去判断缓存是否存在。。不存在的话就去写入缓存。

public static void GetOrInsertCache(string key, object value, double cacheTime)
        {
           //判断key值对应的缓存存在否
            if (HttpRuntime.Cache.Get(key) == null)
            {
               //写入缓存,唯一标识key值,缓存内容value,缓存失效时间cachetime(我这里用的是小时)
               HttpRuntime.Cache.Insert(key, value, null, DateTime.Now.AddHours(cacheTime), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
            }
            else
            {  
               //得到缓存数据
               string GetCacheValue=HttpRuntime.Cache.Get(key);
            }
        }
smartcoach 2013-07-29
  • 打赏
  • 举报
回复
引用 11 楼 zgxASD 的回复:
缓存的是将数据存放在内存里面。。。你可以通过给每个缓存设置一个唯一的key值。当你需要什么数据,输入对应的key值就行了,当然前提是你缓存的数据时间没有过期。。。
这个输入对应的数据是指在url中输入吗?能写个例子吗?
我是地摊小贩 2013-07-29
  • 打赏
  • 举报
回复
缓存的是将数据存放在内存里面。。。你可以通过给每个缓存设置一个唯一的key值。当你需要什么数据,输入对应的key值就行了,当然前提是你缓存的数据时间没有过期。。。
likofans 2013-07-29
  • 打赏
  • 举报
回复
服务器有特定处理URL参数即可
  • 打赏
  • 举报
回复
引用 8 楼 ShenShiampMoYi 的回复:
引用 7 楼 a631373000 的回复:
[quote=引用 6 楼 ShenShiampMoYi 的回复:] 用法感觉和cookie 和session差不多
在url中可以传入吗?
URL? 是说直接修改URL修改cache? 貌似不行吧 [/quote] LZ有兴趣可是了解下 localStorage 谷歌下 也是个不错的存储方法
  • 打赏
  • 举报
回复
引用 7 楼 a631373000 的回复:
引用 6 楼 ShenShiampMoYi 的回复:
用法感觉和cookie 和session差不多
在url中可以传入吗?
URL? 是说直接修改URL修改cache? 貌似不行吧
smartcoach 2013-07-29
  • 打赏
  • 举报
回复
引用 6 楼 ShenShiampMoYi 的回复:
用法感觉和cookie 和session差不多
在url中可以传入吗?
  • 打赏
  • 举报
回复
用法感觉和cookie 和session差不多
  • 打赏
  • 举报
回复
直接Cache[keyname] = keyvalue 可以么?
smartcoach 2013-07-29
  • 打赏
  • 举报
回复
还有高手解答一下吗?
  • 打赏
  • 举报
回复
第一个,如果是服务器端,页面缓存或者局部缓存,是从缓存取得html代码片段 第二个,生命周期里面事件 ResolveRequestCache PostResolveRequestCache 封装检查是否能利用以前缓存的输出页面处理请求的过程。 第三个 VaryByParam=“id”
smartcoach 2013-07-28
  • 打赏
  • 举报
回复
引用 1 楼 banian_cn 的回复:
1.是的 2.获取与该页驻留的应用程序关联的Cache对象。 3.你可以传一个Cache的 key过去,然后去获取Cache
第三个能举下例子吗?具体怎么传? 还有第二个如果在这一步我修改了原来的cache是不是网站页面就不会显示了?
Banianer 2013-07-28
  • 打赏
  • 举报
回复
1.是的
2.获取与该页驻留的应用程序关联的Cache对象。
3.你可以传一个Cache的 key过去,然后去获取Cache

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧