1. c#如何使用缓存提高程序效率
缓存的技术应用应该是非广泛的。而它的作用也是为了提高系统或者网站的执行效率。下面是四种常见的缓存技术:
一.OutputCaching
由于IIS的一些特性,默认情况下OutputCache是打开的,但是要对某些请求进行缓存,还需要开发者进行定制,而且默认情况下,Output Cache 会被缓存到硬盘上,我们可以通过修改DiskCacheable的属性来设置其是否缓存,还可以通过Web config里配置缓存文件的大小。
<%@ OutputCacheDuration="3600" VaryByParam="state" DiskCacheable="true" %>
一般用硬盘缓存是考虑到页面送显的数据比较大,相对内存缓存来说,它的容量大,但是访问速度慢点,如果把周期设太短,使用硬盘缓存的效率就不大好。对于Output Cache的定制,有两种方法,一种是基于底层的API技术,一种是基于高层的@OutputCaching:
1.基于高层的@OutputCaching
A.由参数改变缓存内容:有些时候我们需要根据用户的请求来生成页面,但是用户的请求只有有限的几种组合,这个时候就可以根据用户请求来生成几种缓存页面,来进行缓存。
<%@ OutputCache Duration ="60" VaryByParam = "state" %>
<asp:sqlDataSourceID="SqlDataSource1" runat="server">
<SelectParameters>
<asp:QueryStringParameter Name="state"QueryStringField="state" DefaultValue="CA" />
</SelectParameters>
</asp:SqlDataSource>
B.回调缓存:可以针对每个请求在页面中插入动态的部分,以弥补单独使用静态缓存的不足:
动态的部分用Substitution控件,Substitution控件是一个容器
<asp:SubstitutionID="Substitution1" runat="server" MethodName =""/>
MethodName 里面放入要调用的方法内容。
2. 使用API定制缓存:
通过设置System.Web.HttpCachePolicy属性来进行配置
<%@ OutputCache Duration="60"VaryByParam="none" %>
就可以写成
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
二.FragmentCaching
作为Output的缓存的附加功能,还提供一种缓存技术,专门用于缓存用户控件。在用户控件中设置:
<%@ OutputCache Duration="60"VaryByParam="none" %>
但在引用用户控件的页面不设置缓存。这样的话,页面中除了用户控件是静态的,其他都是动态的。
缓存用户空间同样还可以使用控件作为参数来源。通过指定控件作为缓存控件的数据来源,可以达到缓存控件数据的目的,和上面一样。
三.DataCaching
Asp.net提供了一种非常快捷的方法进行数据库缓存,用户可以非常简单方便的对页面变量进行缓存。并以此提高程序效率。一个页面变量的缓存生命周期与应用程序的缓存生命周期相同
实现是把数据放在Cache中,如:
source = new DataView(ds);
Cache("MyCache") = source;
MyCache这个变量其实就是一个XML文件。
四.SQL Caching
通过配置数据库连接池,只有当数据库数据被改变的时候,缓存才会改变。
开个DOS窗口:
C:\>dir aspnet_regsql.exe/s ——这个文件是专门注册SQL连接池的,它对SQLSever 7.0以上都有专门的支持,我们通过写一些专门的语句来配置这个注册连接池,可以把连接池和本地的应用程序(Asp.net服务器,即IIS)做一个连接。连接池只能监视有限的几个库,不然连接池的负载太大。使用SQL Caching:
先注册,如: aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-ed
aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-et-t"authors"
其中:- S".\SQLExpress" 表示要使用的SQL Server实例为".\SQLExpress"。-E 表示使用当前windows凭证进行身份验证。-d"pubs"表示用于应用程序服务的数据库名称叫"pubs"。-ed表示为SQL 缓存依赖项启用数据库。-et 表示为SQL 缓存依赖项启用表。-t"authors"表的名称为"authors"。
然后页面上:
<%@ OutputCacheDuration="99999999" VaryByParam="none"SqlDependency="Pubs.Authors" %>
就OK了。
2. 如何使用缓存
缓存是分层次的,下面是计算机缓存山:
cpu缓存策略:
寄存器中计算数据,而数据存储在内存中,由于cpu和内存之间的性能逐渐增大,系统设计者在cpu和内存之间插入了3层的高速缓存。高速缓存有三个层级,就是整个计算机缓存系统的一个小缩影。
3. 程序在内存中运行还是在缓存中运行
一般来说,相同价格的存储器,容量与速度成反比的。即装的越多速度相对越慢。
缓存是指在低速设备和高速设备之间的中介。
比如与cpu 速度相比,内存速度很慢,就增加一个速度比较快的L1 cache、L2 cache缓存,查询的时候先在缓存查,查不到再去慢的内存查,把查到结果放到缓存,下次在用的时候就快了。
与内存相比,硬盘或者网络传输相比慢很多,所以为了速度可以把一部分数据放在内存中,查询的时候先在内存查,内存查不到在去硬盘或网络,把查到结果放到内存中,这就是缓存。
所以程序都是运行在内存中的,至于缓存只是一个中介作用,可能是内存做缓存,也可能是别的设备。
4. 用较多的内存来运行程序还是系统缓存
配置不算高,但是简单的看看视频,听听歌上上网还是没有问题的,至于你的问题标题没有太看明白,系统会使用硬盘来做缓存(也即是 页面文件 C盘根目录下的隐藏文件 pagefile.sys)
如果是其他第三方工具的选项,选择第一个就好了,内存本来就是给程序用的,用来缓存浪费了。
5. 性能选项里的内存使用是“程序”好还是“系统缓存”好
首先你要区分内存和缓存的区别
内存
计算机的物里储存器
缓存
也就是虚拟内存
是指在物理内存不够的情况下
从硬盘里划出一部分空间来当做内存使用
但是硬盘的读写速度有限
达不到物里内存那样的读写速度
所以说
楼主
如果在物理内存足够大的情况下
虚拟内存可以设的小一点
现在的计算机配置一个g的内存
完全能满足各种游戏和办公需要
所以说
楼主
你可以不用系统缓存
或者不用把缓存设置的那么大
6. 内存使用,调整以优化性能,选择程序和系统缓存哪个好
你哈儿应该会优化系统的吧,那建议你开缓存算了。选择系统缓存,可以提高系统性能,但是由于会把系统文件预读入内存,因此系统在内存的占用较高,相应的应用程序的空间较少,不建议小内存的电脑开这项,但是你哈B电脑应该够用,可以开系统缓存,因为系统占用空间高时,对虚拟内存的处理也较快,应用程序也有主够的内存运行。 补充: 不过选择程序的话会快一点。虽说XP自带附加功能不是很全,但是有些小工具还是有很大作用的哦,毕竟是微软啊。
7. 请问在XP系统下我要开很多程序内存使用里选择程序还是系统缓存好呢
看你的内存条了,大于512的话就选程序吧。因为后者是虚拟内存。只有你做服务器时才选那个
8. 高速缓存有什么作用为什么cpu需要高速缓存
什么是高速缓存技术:
高速缓存英文是cache。一种特殊的存储器子系统,其中复制了频繁使用的数据,以利于cpu快速访问。存储器的高速缓冲存储器存储了频繁访问的
ram
位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主ram
存储器速度快,所以当
ram
的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
高速缓存的作用:
在cpu开始执行任何指令之前,都会首先从内存中取得该条指令以及其它一些相关数据和信息。为了加快cpu的运行速度,几乎所有的芯片都采用两种不同类型的内部存储器,即高速缓存。缓存被用来临时存放一些经常被使用的程序片段或数据。
一级高速缓存是性能最好缓存类型,与解释指令和执行算术运算的处理单元一到构成cpu的核心。cpu可以在全速运行的状态下读取存放在一级高速缓存中的指令或数据。intel的处理器产品一般都会具有32k的一级缓存,而象amd或via这种竞争对手的产品则会使用更多的一级缓存。
如果在一级缓存中没有找到所需要的指令或数据,处理器会查看容量更大的二级缓存。二级缓存既可以被集成到cpu芯片内部,也可以作为外部缓存。pentium
ii处理器具有512k的二级缓存,工作速度相当于cpu速度的一半。celeron以及更新的pentium
iii芯片则分别具有128k和256k的在片二级缓存,能够在处理器全速下运行。
对于存放在速度较慢的二级缓存中的指令或数据,处理器往往需要等待2到4个时钟周期。为了充分利用计算资源,cpu可以在这段时间内查看和执行其它正在等候处理,但不需要使用额外数据的指令,从而提高整个系统的速度,把空闲时间降低到最低程度。
9. 什么叫缓存
所谓的缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。
1、通过文件缓存;顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;
2、内存缓存;也就是创建一个静态内存区域,将数据存储进去,例如我们B/S架构的将数据存储在Application中或者存储在一个静态Map中。
3、本地内存缓存;就是把数据缓存在本机的内存中。
4、分布式缓存机制;可能存在跨进程,跨域访问缓存数据
对于分布式的缓存,此时因为缓存的数据是放在缓存服务器中的,或者说,此时应用程序需要跨进程的去访问分布式缓存服务器。
(9)程序是否需要用缓存扩展阅读
当我们在应用中使用跨进程的缓存机制,例如分布式缓存memcached或者微软的AppFabric,此时数据被缓存在应用程序之外的进程中。
每次,当我们要把一些数据缓存起来的时候,缓存的API就会把数据首先序列化为字节的形式,然后把这些字节发送给缓存服务器去保存。
同理,当我们在应用中要再次使用缓存的数据的时候,缓存服务器就会将缓存的字节发送给应用程序,而缓存的客户端类库接受到这些字节之后就要进行反序列化的操作了,将之转换为我们需要的数据对象。
10. 小程序中,哪些数据该使用缓存,哪些该使用全局变量
缓存就是类似数据库,全局变量就是所有页面都能用,这是两个东西.
比如说新闻应用,首页的数据需要放到缓存里,然后下次访问首页的时候直接加载缓存的数据,然后在异步调用接口刷新数据,这样在进入首页的时候就不需要loading了,直接能看到数据,感觉就是秒开,用户体验更好一些,
全局变量就是类似用户登录信息,登录之后设置成全局的,每个页面都可以使用,不然跳转后就需要每次都重新获取用户信息