在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1,ASPX页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam="none" %> 这样整个页面的内容都会被缓存,页面中的ASP.NET代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。 页面缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者、一次访问和100万次访问对数据库的压力是一样的。 2,禁止IE缓存 假如有一个页面New.aspx,在客户端第一次访问后,它会在Internet临时文件夹里有一个New.aspx,文件生成.之后,如果修改了 New.aspx的数据后再次访问该页面,发现IE并没有对这个New.aspx的数据进行更新,反而打开的是第一次访问的页面! IE自动(默认)调用了Internet临时文件夹里有一个New.aspx文件,而不是重新下载新的New.aspx,怎样能让IE自动重新下载新的New.aspx呢,就像点了刷新按钮重新加载此页面一样? 解决的第一种方法: 客户端的设置方法:Internet选项→常规→Internet临时文件中"设置"→每次访问此页时检查。 这种设置时最好同时删除临时文件,这种方法是让客户自己设置自己的浏览器,如果客户忘记了设置,那么,新的页面总是下载不到本地.这时,客户会怎样认为呢?("肯定是程序的错!") 此外,别人访问您的页面,客户端的浏览器由他们来操作,一般,这种方法不宜解决此类问题。 解决的第二种方法: 让程序自己来让页面自动下载!这种方法实际上是让页面不保存到Internet临时文件夹中,每次访问页面都会让浏览器下载页面。 只要在New.aspx代码的Page_Load事件中加上 Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);即可. 在不加这句时打开页面,Internet临时文件夹里会有一个页面文件,而加了,就会没有了。不过,像aspx文件中如果有图片文件或js文件,那还是会下载到Internet临时文件夹的。 3,JS中的ShowModalDialog()函数打开ASPX页面时禁止页面缓存 方法一:先写一个htm页面,里面嵌套一个iframe,iframe的src就是aspx页面,然后ShowModalDialog()的页面就是这个htm页面,而不是先前的aspx页面,这样就不存在缓存问题。 方法二:在aspx页面的Page_load()里面写上一句 Response.expires = -1; 意思就是让页面立即过期,这样外面也不用嵌套一个htm页面. 4,数据源缓存 如设定ObjectDataSource的CacheDuration(缓存时间:秒),EnableCaching=true。这样每隔CacheDuration指定的时间段才调用SelectMethod指定的方法来执行数据库查询,其它时候都是直接返回缓存的数据 缓存固定的时间适用于首页、文章列表页等访问频繁的页面,对于看帖页面则不适合,假设有100万个帖子,如果每个帖子都是固定缓存1小时的话,假设一小时之内有10万个帖子被看了的话,那么就要缓存十万个帖子,非常占用内存,因为“百年一看”的“坟贴”偶然被访问一次也缓存一个小时,占用内存。这时候可以采用“滑动窗口”策略,比如帖子缓存10分钟,如果10分钟之内有访问了,则缓存的实效时间修改为从被访问这一刻起的10分钟之后,以此类推。这样经常访问的帖子就可以“长期缓存”,而不经常访问的帖子也不会因为偶然的访问而长期占用缓存。设置方法,数据源:CacheExpirationPolicy="Sliding" 注:Asp.Net缓存主要分为:页面缓存、数据源缓存、数据缓存这三种主要类型。 |
请发表评论