IIS6中会有某项设置影响客户端ajax刷新吗?
最近在用ckfinder做后台的图片上传与管理,碰到个无法解决的问题,望高手赐教!大致情形如下:
1.最初是用虚拟主机,服务器Win2003+IIS6,客户端一切正常。
2.后来换了VPS,服务器同样是Win2003+IIS6,IE9、IE10使用正常,但IE6~IE8出现问题:图片上传后,下方的列表不能即时刷新,看不到刚刚上传的文件;按面板中的刷新或F5或Ctrl+F5,均无法刷新列表。只有关闭该页面再重新打开,才能看到最新上传的内容。
3.起初怀疑是IIS缓存:先是关掉IIS中的“启用缓冲”,未果;修改服务器注册表,关闭IIS静态文件缓存,未果。
4.后怀疑是ajax缓存:当单独修改ckfinder.html的文档标题,发现刷新是可以更新的,所以应与IIS缓存无关;列表那块可能是ajax无刷新技术读取的,于是在ckfinder.js中增加语句s.setRequestHeader('If-Modified-Since', '0'); 测试发现仍旧无效。
5.既然怀疑是缓存,最后改了IE中Internet临时文件中的检查网页最新版本设置,从默认的“自动”改成“每次访问网页时”,测试发现问题解决了!
但面对众多客户,肯定无法要求他们一一更改浏览器设置的,况且同样的代码、同样的浏览器,在虚拟主机使用都是没有问题的;而换到VPS上,IE9、IE10(Win7客户端)也都是正常的。所以在怀疑是现在的VPS上的IIS设置有什么问题,与IE8以下版本及ajax刷新缓存有什么不兼容,请教高手是否有解决的思路?感谢不尽!
------解决方案--------------------给你那个AJAX请求加上时间戳
xxx.com?xxx=sss&t=new Date()
------解决方案--------------------可以试试如下方法:
在IIS管理器里,打开你的网站上用来放图片的文件夹的属性对话框,选择HTTP headers选项卡,勾选Enable content expiration,下面选择Expire immediately。
------解决方案--------------------
你用chrome或者friefox+firebug,按F12,查看network面板,先看看在可以用的地方(虚拟主机或者本地哪里)这个AJAX请求的地址、参数和返回。
然后再在VPS上试一试,看看是没有发出请求还是请求出错,或者是请求返回为空。