Atlas与页面缓存冲突造成报错问题

Atlas会与页面缓存冲突,造成Unkown error问题。

Atlas与页面缓存冲突造成报错问题

左直拳

近日在网页应用了Atlas,不料部署到服务器后,却频频出错,提示:Unkown error。既然是出错,又不说是什么错误,这不为难人吗?更奇怪的是,并不是所有的时候都出错,基本上是同样的操作,10次会有12次没问题。

本来在本地开发的时候就出过错,只不过频率很小,因为是系统不稳定,就没有在意。

是什么原因呢?

由结果和调试来看,错误发生在提交后页面回传的时候。数据已经在后台处理了,只是重新装载页面出了问题。

开始时以为是母版页引发了错误。因为在该页面上应用了母版页。但将母版页的内容和内容页的内容合成一个页面后,问题依旧。

在网上查了一下资料,说UpdatePanel的原理是将整个页面提交,数据处理完后回传,然后有选择性地进行局部更新。古怪的是,听说它将所有的JS都放在了一起。这样有时侯会造成一些问题,比如注释语句<!--会将别的函数也注释掉了。不知道跟我这个错误有没有关系?因为我用了很多自己写的用户控件,里面有许多比较复杂的JS脚本。

于是一个个地试。结果试到一个很简单的控件,就发现它会导致错误,没用它就没事。奇怪啊,这个控件是一行JS脚本都没有啊!

发现是因为它用到了缓存:<%@ OutputCache Duration="600" VaryByParam="None"%>将缓存声明去掉,果然正常了。

不过如果仅仅因为要用AJAX就去掉缓存,就太可惜了。我努力去尝试在程序里根据条件来控制缓存,却没有成功。缓存的确也可以在代码里访问,问题只是声明性的,运行过程中就无法控制了。

Atlas只是微软的Ajax1.0,还是beta,估计以后会好一点吧。不过还是很方便的,控件的形式,在页面上拖来拖去,再配置一下就可以了,不用写什么东西。

你可能感兴趣的:(Ajax,应用服务器,脚本)