zoukankan      html  css  js  c++  java
  • 几种asp.net页面缓存的做法

    1,aspx页面缓存
    页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ outputcache duration="60" varybyparam="none" %>
     这样整个页面的内容都会被缓存,页面中的asp.net教程代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。
     页面缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者、一次访问和100万次访问对数据库教程的压力是一样的。
    duration="60" 的意思是指定缓存的时间为60秒,可根据情况自已设定,超过这个时间则缓存失效,再次生成以后会缓存60秒,以此类推。
    varybyparam="none" 的意思是设定无参数缓存(有参数的缓存下面会讲到)
    但是对于一些有参数的页面,比如新闻内容页来讲(比如是针对于viewnews.aspx页面的,不会自动去读取?id=1),如果如上设置的话,则会缓 存在第一个看到的新闻,因为?id=2、?id=3只是页面的不同参数而已,为了能让不同的新闻各种缓存,因此可以设置 varybyparam="id",表示对于不同的id参数进行单独缓存。如果有多个确定缓存参数,则将参数名用分号隔开即可,比如 varybyparam="id;number"。
    如果想让任何不同的查询字符串都创建不同的缓存,则设置varybyparam="*",一般情况下设置“*”就足够了。
    这两个参数是必须的,不能缺省。另外还有一个重要的参数diskcacheable="true|false" 意思是要不要把缓存放到硬盘上,如果设为false则缓存数据会放到内存中。
    这里需要注意一下,如果页面数据很小的话可以把缓存数据放到内存中,如果数据较大最好放到硬盘上,否则会占用大量内存影响服务器运行,如果数据缓存到硬盘 上的话,记得要把duration=""的值设的大一些如duration="3600",如果设的太小,服务器会过于频繁的在硬盘上写数据反而会降低性 能,如果在内存中缓存数据duration""则不要设的太长,当然具体时间长短要大家自己多尝试才知道。


    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指定的方法来执行数据库查询,其它时候都是直接返回缓存的数据。

  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/chennie/p/2185954.html
Copyright © 2011-2022 走看看