国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页服务器类Web服务器 → web中缓存的使用

web中缓存的使用

我要评论 2009/06/27 12:59:12 来源:国语自产精品视频在线看 编辑:佚名 [ ] 评论:0 点击:251次

很多人都知道【dōu zhī dào】什么叫【shí me jiào】🕌缓存,甚至学习【xué xí】过🛋,但用起来还真♐难用🐐。我经过几天的学习【xué xí】cache想跟大【xiǎng gēn dà】家分享🐹和讨论【hé tǎo lùn】。

我是带🗞着疑问🖤去学习【qù xué xí】🍥的。缓存是用在什【yòng zài shí】么地方,有什么好处【hǎo chù】。

缓存就🔪是把获📵取的数【qǔ de shù】据暂时存到缓存中,当获取😯的数据【de shù jù】没有变【méi yǒu biàn】🎍化时就【huà shí jiù】还是用【hái shì yòng】缓存里的东西🙏。可能有人会问怎么判🈸断获取【duàn huò qǔ】🐺的数据【de shù jù】没有变【méi yǒu biàn】🎍化【huà】?这个等下会说到。这样从缓存数据可是【jù kě shì】🍝获取数🚡据速度快很多,但要求数据不【shù jù bú】🛵时时常🈴变化的【biàn huà de】😤。像博客🥌园里的【yuán lǐ de】博客排【bó kè pái】行榜,基本没变化【huà】🚃,这是虽【zhè shì suī】🥄是数据不【shù jù bú】🛵怎么变化【huà】🚃,但这样页面每个人浏🔐览都是【lǎn dōu shì】一样的东西🙏,那又何必用缓存干什么呢【me ne】?直接把【zhí jiē bǎ】此页面生成🎨html,这样打【zhè yàng dǎ】开的速【kāi de sù】度比用【dù bǐ yòng】缓存还快。

当一个👻页面既【yè miàn jì】有公共部分【bù fèn】(每个人浏览🕝的都一样🐰)又有个性部分【bù fèn】(自己的🚃信息)。比如当当网里😚就有个购物车🌞当你购【dāng nǐ gòu】完物时,底单上🗜面有推荐买的【jiàn mǎi de】产品【chǎn pǐn】🔌(这也产【zhè yě chǎn】🐴品可能【pǐn kě néng】一天换一次),当然推荐的【tuī jiàn de】产🎰品【pǐn】跟你买的产品【chǎn pǐn】🔌有关【yǒu guān】,此时不✳能生成html了,因为不是每个人浏览🕝此页面都相同,只有当【zhī yǒu dāng】📚用户买🏄的产品【chǎn pǐn】🔌相关到推荐的【tuī jiàn de】产🎰品相同【pǐn xiàng tóng】时👭。此时就要用缓【yào yòng huǎn】🌽存存此推荐产💖品的数【pǐn de shù】🤵据,当然这个缓存【gè huǎn cún】键值是【jiàn zhí shì】跟买的产品【chǎn pǐn】🔌有关【yǒu guān】,只要买✋的产品【chǎn pǐn】🔌相关得【xiàng guān dé】到的推【dào de tuī】荐产💖品【pǐn】(这里面【zhè lǐ miàn】有一种关系在里面)才能该【cái néng gāi】缓存的📏东西【dōng xī】。

打个比【dǎ gè bǐ】方【fāng】:当你🐏买书时【mǎi shū shí】就会推荐【jiàn】📿其他好书给你🐏,此时买【cǐ shí mǎi】🛎书的推荐【jiàn】书都📀一样🚳,调用的缓存🎞都一样🚳,而买电【ér mǎi diàn】脑的话可能会【kě néng huì】推荐【jiàn】📿你🐏各种好【gè zhǒng hǎo】电脑给【diàn nǎo gěi】你🐏,这时调用推荐【jiàn】🧢电脑的缓存🎞。

上面可【shàng miàn kě】☔能讲了【néng jiǎng le】🐾下缓存用在什【yòng zài shí】么地方【me dì fāng】,当然我只知道🐸这种情况🏑,可能还有其他🏁情况🏑,那位知道可评论下【lùn xià】。

缓存的好处当然是减轻服务【qīng fú wù】📡器的负🔨担【dān】,加快浏览速度。但如果🚧缓存用得不好,可能得🕊到的数据是过【jù shì guò】🔤时的📭,或者反【huò zhě fǎn】而使浏览熟读🤺更慢【gèng màn】。(当你缓【dāng nǐ huǎn】存经常变化的【biàn huà de】数据时)

缓存有分客户端缓存服务器端缓存吗?

两个都【liǎng gè dōu】有【yǒu】,只是客户端缓存【cún】🥍内嵌在浏览🍡器中👒,基本上是浏览⏳器自动处理缓存【cún】🥍。

客户端【kè hù duān】🍰缓存可以有效地减轻服务器端负载【duān fù zǎi】。首先了【shǒu xiān le】⛴解一下🕍 HTTP 头:Last-Modified 与【yǔ】 If-Modified-Since。简单的说【shuō】,Last-Modified 与【yǔ】If-Modified-Since 都是用于记录页面最后修改时间的【shí jiān de】 HTTP 头信息,只是📃 Last-Modified 是由服【shì yóu fú】务器往🎼客户端【kè hù duān】🍰发送的🚺 HTTP 头,而【ér】 If-Modified-Since 则是由👽客户端【kè hù duān】🍰往服务【wǎng fú wù】🍼器发送🤹的头实现【xiàn】。

在浏览器可设【qì kě shè】🈷置浏览【zhì liú lǎn】器如何🧀使用缓存的【cún de】。一般默认是自动😟。操作步【cāo zuò bù】骤如下🚢:

工具【gōng jù】🐁-》internet选项【xuǎn xiàng】-》常规📢-》设置-》检查网【jiǎn chá wǎng】页的较新版本中有四⬇个选项【gè xuǎn xiàng】来控制缓存的♈运用

当然代码可控制客户📶端缓存【duān huǎn cún】,比如比📨想要浏【xiǎng yào liú】览器缓💳存东西可用下面代码【miàn dài mǎ】

html禁用客户端缓存

以下为引用的😢内容【nèi róng】:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1978 08:21:57 GMT">

C#中禁止cache的方法!

以下为🚝引用的【yǐn yòng de】内容:
Response.Buffer = true;
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";

我对客📻户端缓【hù duān huǎn】👬存【cún】知道太少👏,而且我【ér qiě wǒ】们写程序也很少写客户端缓【hù duān huǎn】👬存【cún】, 希望有人提供💦更多关⛸于客户【yú kè hù】端缓【duān huǎn】👬存的东【cún de dōng】西。

服务端【fú wù duān】缓存有🥚System.Web.Caching.cahe和memcached

当然😨System.Web.Caching.cahe是微软写的类,而【ér】memcached是第三🔚方插件【fāng chā jiàn】。System.Web.Caching.cache目前还【mù qián hái】不是分🔰布式缓🐇存,只能在一台电【yī tái diàn】脑上【nǎo shàng】(07时候💰),而【ér】

memcached是分布式的高速缓存。

服务器缓存可分为三种缓存

1.输出缓存:

要实现页面输🗞出缓存【chū huǎn cún】,只要将一条 OutputCache 指令添【zhǐ lìng tiān】💐加到页🔏面即可【miàn jí kě】。

<%@ OutputCache Duration="60" VaryByParam="*" %>

如同其🤟他页面指令一🍳样,该指令应该出现在🔎 ASPX 页面的【yè miàn de】🍫顶部,即在任何输出【hé shū chū】之前【zhī qián】🏏。它支持【tā zhī chí】五个属🍣性(或参数),其中两【qí zhōng liǎng】个是必需的【xū de】。

Duration

必需属性。页面应【yè miàn yīng】该被缓存的时📂间【jiān】,以秒为单位【dān wèi】🏤。必须是🔁正整数。

Location

指定应【zhǐ dìng yīng】💺该对输出进行🦆缓存的位置。如果要🚾指定该【zhǐ dìng gāi】参数,则必须【zé bì xū】是下列【shì xià liè】🤲选项之一:Any、Client、Downstream、None、Server 或 ServerAndClient。

VaryByParam

必需属【bì xū shǔ】🚿性。Request 中变量【zhōng biàn liàng】🆑的名称,这些变🥉量名应🐹该产生【gāi chǎn shēng】单独的🍶缓存条目🚎。“none” 表示没【biǎo shì méi】有变动⏲。“*” 可用于为每个不同的变量数组创建新的缓【xīn de huǎn】存条目🚎。变量之【biàn liàng zhī】间用 “;” 进行分隔【gé】。

VaryByHeader

基于指定的标头中的变动改变缓存条目。

VaryByCustom

允许在 global.asax 中指定🐛自定义🤤变动【biàn dòng】(例如【lì rú】,“Browser”)。

2.片段缓存:

示例

<%@ OutputCache Duration="60" VaryByParam="*" %> 该示例将缓存🚄用户控【yòng hù kòng】件【jiàn】🕓60秒,并且将【bìng qiě jiāng】🌨针对查【zhēn duì chá】🤡询字符【xún zì fú】💠串的每🔉个变动【gè biàn dòng】、针对【zhēn duì】📸此控件【cǐ kòng jiàn】🕓所在的每个页面创建【miàn chuàng jiàn】单🆕独的缓【dú de huǎn】📬存条目。<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %> 该示例将缓存🚄用户控【yòng hù kòng】件【jiàn】🕓60秒,并且将【bìng qiě jiāng】🌨针对【zhēn duì】📸CategoryDropDownList控件【jiàn】的🌨每个不☕同的值、针对【zhēn duì】📸此控件【cǐ kòng jiàn】🕓所在的每个页面创建【miàn chuàng jiàn】单🆕独的缓【dú de huǎn】📬存条目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"
Shared="true" %>

最后,该示例🥐将缓存【jiāng huǎn cún】用户控【yòng hù kòng】件【jiàn】👞60秒【miǎo】😚,并且将针对每个浏【měi gè liú】🔊览器名称🎒和主要🎎版本创建一个【jiàn yī gè】缓存条目。然后,每个浏【měi gè liú】🔊览器的缓存条目将由引用此🏠用户控【yòng hù kòng】件【jiàn】👞的所有页面共享(只要所【zhī yào suǒ】🧣有页面都用相同的【tóng de】😠ID引用该👀控件【jiàn】👞即可【jí kě】)。

3.编程用得最多的缓存:数据缓存

System.Web.Caching.cahe被🧖httpRuntime.Cache或【huò】HttpContext.Current.Cache实例化【shí lì huà】🕑。httpRuntime.Cache,HttpContext.Current.Cache是内置对象就想当与seesion。

HttpContext.Current.Cache与【yǔ】😬HttpRuntime.Cache区别:

HttpContext.Current.Cache:为当前✌ HTTP 请求获取【huò qǔ】🐣Cache对象【duì xiàng】。 HttpRuntime.Cache:获取【huò qǔ】🐣当前应【dāng qián yīng】用✌程序的Cache。HttpContext.Current.Cache是调用了 HttpRuntime.Cache,且🙋HttpContext.Current.Cache是用在❔web程序上【chéng xù shàng】,而【ér】HttpRuntime.Cache是用在❔任何程序上【chéng xù shàng】。System.web命名空间下🛺。

其实HttpContext.Current.Cache是通过【guò】🔑 HttpRuntime.Cache来实现的【de】,所以一【suǒ yǐ yī】🕙般实例化【huà】🙌最好通过【guò】🔑HttpRuntime.Cache来实例化【huà】🙌:

例如【lì rú】❣:System.Web.Caching.Cache cache = HttpRuntime.Cache

System.Web.Caching.Cache有很多方法【fāng fǎ】🍫,但方法【fāng fǎ】🍫中add中是存缓存【huǎn cún】🍪

参数中有缓存时间,依赖项。

缓存时🎼间即到当缓存🧞的东西达到指😦定时间就让缓【jiù ràng huǎn】存失效【cún shī xiào】🖋,而依赖项是当【xiàng shì dāng】依赖项发生变【fā shēng biàn】化就会【huà jiù huì】使缓存😋失效。

依赖项⛪有一般【yǒu yī bān】依赖项⛪ CacheDependency和数据【hé shù jù】📛库依赖项⛪SqlCacheDependency。

虽然CacheDependency类完成【lèi wán chéng】了很重要的功能【néng】,但其组🕉成结构【chéng jié gòu】却比较🎻简单,主要有【zhǔ yào yǒu】两个属性和一🕝个方法🐬。

— 属性“HasChanged”:判断【pàn duàn】CacheDependency对象是🌵否已更👈改【gǎi】。

— 属性【shǔ xìng】🌈“UtcLastModified”:返回上【fǎn huí shàng】次依赖项的修🍟改日期

— 方法【fāng fǎ】“Dispose”:释放CacheDependency对象所占有的🚌资源【zī yuán】。因为缓【yīn wéi huǎn】🦍存类继承了接【chéng le jiē】🧒口“IDispose”,所以必须实现此方法【fāng fǎ】➿。

CacheDependency

例如【lì rú】🚎 Cache.Insert(“key”, myXMLFileData, DateTime.Now.AddMinutes(1),,new

System.Web.Caching.CacheDependency(Server.MapPath(“users.xml”)));

users.xml文件就相当一🔻般依赖【bān yī lài】项,当xml文件被改了,则此缓【zé cǐ huǎn】🗳存失效【cún shī xiào】🈲。

SqlCacheDependency一般是【yī bān shì】增对数据库【jù kù】🌶的,这个设置需要👼在【zài】config里设置,而且还【ér qiě hái】要启动🐅数据库【jù kù】🌶的这样服务⚾。

Cache.Insert 中可设置跟数据库中那个表【nà gè biǎo】🥉关联,一旦表【yī dàn biǎo】🚌有变化【yǒu biàn huà】就会导致cache失效🦕。

可到网上查询如何使用

关键词:web

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 欢迎喜欢
  • 0 白痴
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙视