window.showModalDialog第二次不走PageLoad方法
2013-04-09 14:22
387 查看
今天发现了一个问题,大家或者见过,或者没有注意到,反正做个提醒啦。
我们一般写页面的时候都会在Page_Load的时候加Response.Expires = -1;可能很多人没有注意,也可能很多人知道这个是清缓存的,但是不知道用处。
调试的时候,都不会走pageload方法,然后就清缓存,重启IIS,或者重新编译,每次都是页面第一次打开的时候走PageLoad,然后就不走了。
这个问题出现的两个条件:1、浏览器是IE(今天只用了IE8),2、打开窗口的方式为:window.showModalDialog。
这样当我们第二次打开页面的时候会直接从缓存中取,不会再走page_load了,估计是MS为了自己页面性能进行优化的吧。
PS:同样测试了一下,FireFox和Chrome,貌似没有这个问题
解决方法:
1、 后台加:Response.Expires = -1;
2、前台弹出页面的时候,url后面加window.showModalDialog("ChildPage.aspx?ID="+ Math.random(), "", features);
3、前台加: <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
4、前台页面添加<%@
OutputCache Duration="1" VaryByParam="none"%>
Duration 和 VaryByParam 是必选参数,前者标识过期时间,后者表示 GET或 POST 名称 / 值对的字符串。如果不使用该属性,可是设置为 none 。
在这里我们还要说明一个参数 VaryByCustom ,使用这个参数,我们可以自定义输出缓存要求的任意文本。
除了在 OutputCache 指令里面申明该属性之外,我们还得在应用程序的 global.asax 文件的代码声明块中,重写 GetVaryByCustomString 方法来为自定义字符串指定输出缓存的行为。
5、将IE的设置改一下再试试,Internet选项->常规->设置->每次访问此页时检查。
其实俺对缓存这一块了解也不深,有兴趣的话可以看看这个网页: http://blog.csdn.net/kable999/article/details/4412808
我们一般写页面的时候都会在Page_Load的时候加Response.Expires = -1;可能很多人没有注意,也可能很多人知道这个是清缓存的,但是不知道用处。
调试的时候,都不会走pageload方法,然后就清缓存,重启IIS,或者重新编译,每次都是页面第一次打开的时候走PageLoad,然后就不走了。
这个问题出现的两个条件:1、浏览器是IE(今天只用了IE8),2、打开窗口的方式为:window.showModalDialog。
这样当我们第二次打开页面的时候会直接从缓存中取,不会再走page_load了,估计是MS为了自己页面性能进行优化的吧。
PS:同样测试了一下,FireFox和Chrome,貌似没有这个问题
解决方法:
1、 后台加:Response.Expires = -1;
2、前台弹出页面的时候,url后面加window.showModalDialog("ChildPage.aspx?ID="+ Math.random(), "", features);
3、前台加: <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
4、前台页面添加<%@
OutputCache Duration="1" VaryByParam="none"%>
Duration 和 VaryByParam 是必选参数,前者标识过期时间,后者表示 GET或 POST 名称 / 值对的字符串。如果不使用该属性,可是设置为 none 。
在这里我们还要说明一个参数 VaryByCustom ,使用这个参数,我们可以自定义输出缓存要求的任意文本。
除了在 OutputCache 指令里面申明该属性之外,我们还得在应用程序的 global.asax 文件的代码声明块中,重写 GetVaryByCustomString 方法来为自定义字符串指定输出缓存的行为。
5、将IE的设置改一下再试试,Internet选项->常规->设置->每次访问此页时检查。
其实俺对缓存这一块了解也不深,有兴趣的话可以看看这个网页: http://blog.csdn.net/kable999/article/details/4412808
相关文章推荐
- window.showModalDialog方法第二次调用不会重新加载,而是从缓存中去取
- window.showModalDialog传递参数及返回值方法
- window.showModalDialog()方法与window.showModelessDialog()方法区别与介绍[转]
- window.showModalDialog()方法介绍
- window.showModalDialog()方法在Chrome下不能使用的解决方法
- How can use window.showModalDialog to open a .aspx page pop up window.
- 防止window.showModalDialog 打开的页面 Page_Load 只执行一次的方法
- window.showModalDialog参数传递中含有特殊字符的处理方法
- 模态窗口第二次载入不走pageload
- window.showModalDialog两次加载问题清除缓存方法
- 怎么解决 showModalDialog is deprecated. Please use window.open and postMessage instead.
- Window.ShowModalDialog使用手册
- Window.ShowModalDialog使用手册
- window.showModalDialog相关问题小结
- window.showModalDialog 内跳转页面的问题
- ready事件和onload的区别,及$(window).load()方法
- 简单干净的C#方法设计案例:SFCUI.AjaxLoadPage()之一
- window.showmodaldialog()模态窗口的最小化、最大化问题
- window.showModalDialog 简介
- Window.ShowModalDialog使用手册