日期:2014-05-16  浏览次数:21454 次

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。

------解决方案--------------------
引用:
不是ckeditor编辑器的问题,只要ckfinder能看到图片,选择图片都是可以插到编辑器中的。
问题是ckfinder.

照理上面上传完成之后,下面的空白列表处会显示最新上传的文件。但出问题的情况是,上传完成下面列表不会刷新,即看不到上传的图片等。只有关闭整个页面,再重新从ckeditor界面点过来才能看到更新。
另补充个现象,列表中的文件删除后,会随即消失,但点下刷新,被删除的文件又回来了,肯定是缓存的问题。

你用chrome或者friefox+firebug,按F12,查看network面板,先看看在可以用的地方(虚拟主机或者本地哪里)这个AJAX请求的地址、参数和返回。
然后再在VPS上试一试,看看是没有发出请求还是请求出错,或者是请求返回为空。