首页 新闻 会员 周边 捐助

浏览器收到什么样的response就会刷新页面?

0
悬赏园豆:5 [已解决问题] 解决于 2013-09-16 17:10

是不是content-type: text/html的数据包一到,浏览器就肯定刷新页面?

(好担心表达得不够清楚)

 

只有5个豆了。

问题补充:

或者说,浏览器收到的状态正常的content-type:text/html这种数据。。。除了把它解析成网页显示出来,还有什么可能?

其实还是想关心到底什么时候浏览器会刷新页面。听到一种说法是url不改变的时候,或者不发生重定向的时候,页面是不会刷新的。

mumuliang的主页 mumuliang | 菜鸟二级 | 园豆:213
提问于:2013-09-11 15:38
< >
分享
最佳答案
0

这个还真不清楚。

我估计是“除了ajax任何请求都要刷”吧。

 

纯猜测,不负任何法律责任。

即使被顶500次也一样

收获园豆:1
undefined | 小虾三级 |园豆:898 | 2013-09-11 15:44

好奇怪哦。。我怎么会突然想到这个问题。

mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 15:45

@mumuliang: 我看了下楼下的所有答复感觉没准我的是对的。 

以前client-server模式下没有“不刷新”的说法, 只要客户端发请求, 服务器答复了, 铁定刷新, 没跑。

 

后来不是大家觉得这样慢, 才发明了javascript么。

紧接着发现javascript只能处理本地内容, 他们想让服务器响应然后本地又“不想刷新”, 这时候才有“XMLHttpRequest”么。

这时候页面才有刷新与不刷新两种情况出现。 

 

哪怕是load了一个iframe, 那也是刷新了, 只是刷新的是iframe的页面, 没有刷新主页面而已。

 

所以答案很明显了:只要没有特意用ajax做“不刷新”, 那么无论在服务器接收到什么, 都要刷新的。

undefined | 园豆:898 (小虾三级) | 2013-09-11 17:46

@undefined: 大崔你!你会成为一名优秀的销售人员!

那么特意用Ajax做的“不刷新”它得到的response和普通的response之间的决定性的差异在哪里?

mumuliang | 园豆:213 (菜鸟二级) | 2013-09-12 07:07

@mumuliang: 没有差异。 他们是一样的。 你看博客园很多地方就直接在ajax里面render一段html回来。 而实际上, render一段html是一种浪费, 因为html本身不是一个很“精炼”的描述方式。 所以大家会用xml(这个就是最初ajax里面的那个x)或者json来返回数据。 因为这样只返回数据, 所以服务器能少做很多事情, 压力会小很多。 仅此而已。你比如, 如果你用aspx页面直接做service, 来返回数据, 可以, 毫无问题, 但是微软在aspx上做的那些操作都是在凭空消耗服务器资源。 各种事件啊生命周期啊全都没用了(照跑, 只是跑了白跑, 没人在乎它)。 所以大家当时会用ashx来做。 ashx本身功能单一, 但是越单一的东西性能不就越好么。 

undefined | 园豆:898 (小虾三级) | 2013-09-12 11:37

@mumuliang: 然后大家慢慢抽出了page和service的区别, 给大家一个错觉:好像page和service有什么本质不同似的。 你看你用nodejs写东西的时候, 哪有page和service的区别, 一律是write, write, write。。。。。。

undefined | 园豆:898 (小虾三级) | 2013-09-12 11:43

@mumuliang: 举个例子, 比如现在我回复你, 回复成功了, 页面没刷新, 但是提示我回复成功。 可以这么返回:<span class="xxx">回复成功!<span><a onclick="xxxx">刷新评论</a>

 

也可以这么返回:{success:true}

很显然下面的很节约资源吗。

undefined | 园豆:898 (小虾三级) | 2013-09-12 11:49

@undefined: 所以现在大家都不在aspx上做事了么?什么新东西又出现了?

mumuliang | 园豆:213 (菜鸟二级) | 2013-09-12 11:58

@mumuliang: MVC啊, MVC让一切变得极为简单, 只要返回不同的view就行了。 如果是返回JSON那么就返回JSON view, 如果是页面就返回view, 等等。 有一句话很精巧的概括了这一切(好像是RESTFUL里面提到的, 不是很确定): web本来就应该是简单的

undefined | 园豆:898 (小虾三级) | 2013-09-12 12:00

@undefined: 可是创建mvc的时候也有问是用aspx还是cshtml呢

mumuliang | 园豆:213 (菜鸟二级) | 2013-09-12 12:02

@mumuliang: 这个看controller了。 用aspx和cshtml的还算页面, 但是也可以选择不返回页面, 直接返回数据。 这个便利在于, 以前, 相同的url, 如果从page变成service, 要做一些hack, 现在只要controller觉得他应该是service, 就可以直接是service了。 让你从node.js进入web, 就是让你少关心这些没用的东西, 就像让你学C的话绝对是让你写console程序, 而不是让你用MFC之类的东东。

undefined | 园豆:898 (小虾三级) | 2013-09-12 12:05

@mumuliang: 有时间可以再看下RESTFUL的那本书。 名字我忘了。你可以去皮皮书屋搜下。 

undefined | 园豆:898 (小虾三级) | 2013-09-12 12:07

@undefined: 是一只猫还是一只四脚蛇?

mumuliang | 园豆:213 (菜鸟二级) | 2013-09-12 12:26

@mumuliang: 好像是蛇。 有没有脚就不记得了。

undefined | 园豆:898 (小虾三级) | 2013-09-12 13:44

@mumuliang: 猫猫猫!!! 我去下了个电子版看了下, 是猫的那本。 我不是说蛇那本不好, 那本我没看过所以不知道。

undefined | 园豆:898 (小虾三级) | 2013-09-12 13:48

应该是每一次response都会刷新页面,ajax的特殊支出是专门接管了response,自己来处理,这是我的理解

小AI | 园豆:354 (菜鸟二级) | 2013-09-17 12:32
其他回答(3)
0

这个问题有意思,我觉得只要服务器返回的状态码不是304,浏览器必然要刷新页面

收获园豆:1
dudu | 园豆:30162 (高人七级) | 2013-09-11 15:59

啊。。原来是这样。。

支持(0) 反对(0) mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 16:12

之前一直在猜是不是有个头叫做什么不刷新之类的。。=v=

支持(0) 反对(0) mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 16:13

@mumuliang: 根据状态码判断下面该干什么活

支持(0) 反对(0) dudu | 园豆:30162 (高人七级) | 2013-09-11 16:15

呃,304是不是还是会根据本地缓存来重新解释一遍页面文件?就是说,会不会重新加载一次页面?

支持(0) 反对(0) mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 16:16

@mumuliang: 页面还是需要重新解析的

支持(0) 反对(0) dudu | 园豆:30162 (高人七级) | 2013-09-11 16:29
0

只要浏览器发送了请求,并且响应内容在不包含动态内容且发生过更改,那么浏览器就会刷新。

收获园豆:1
Launcher | 园豆:45050 (高人七级) | 2013-09-11 16:13

不包含动态内容的意思是?

支持(0) 反对(0) mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 16:28

@mumuliang: 比如一些 js ,它们可以在页面呈现后局部更新页面。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2013-09-11 16:31
0

应该是和返回的状态码有关的,content-type只是说明了返回的内容类型。

收获园豆:1
sinhbv | 园豆:2579 (老鸟四级) | 2013-09-11 16:16

嗷。。

支持(0) 反对(0) mumuliang | 园豆:213 (菜鸟二级) | 2013-09-11 16:29

@mumuliang: 具体细节你可以查询http协议以及浏览器实现方面的材料参考。

支持(0) 反对(0) sinhbv | 园豆:2579 (老鸟四级) | 2013-09-11 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册