当我们刷新网页时会发生什么?

问题描述:

我希望有人能回答我关于刷新网页的基本问题。当我们刷新网页时会发生什么?

我有一个dotnet网络形式,用户填写一些细节并点击提交。网页后面的代码有大约20个函数可以执行。

现在假设,当用户点击提交按钮时,网页正在执行第五个功能,同时用户刷新他的浏览器;

已处理页面会发生什么? 页面是否会立即终止? 或者它会被允许运行,直到它执行第20个函数? 或者将运行的页面销毁并创建一个新页面并发送给客户端?

谢谢您的回答。

一旦提出要求从浏览器到服务器的页面被处理。即使用户取消或停止请求,服务器也会继续处理请求。如果用户重新加载/刷新页面,则会与第一个请求并行执行另一个请求。

即使是在PHP的情况下,服务器不主动检查是否user has aborted的连接。服务器只在尝试返回请求结果时才知道它已被中止。

互联网是一个断开连接的环境。服务器对浏览器一无所知。服务器知道的唯一一件事是请求已经完成,并且它必须填写请求。

简单地说,用户看到的页面会丢失,除非在会话中,他们不能再次拾取它。但服务器不知道用户已断开连接,因此应用程序将继续运行,除非应用程序上有会话/超时,即使会话未完成,也会出现奇怪。

希望这会有所帮助。

RE

代码执行将继续到结束。

+0

嗯...照顾提供此索赔的参考? – jldupont 2009-10-27 15:18:07

+0

@Dani - 不正确。至少对于PHP我知道。 – mauris 2009-10-27 15:21:33

+1

它的确如此,至少当我意外地在页面上刷新而服务器停留在长时间的操作上时,我发现它完成了所有代码,然后才重新加载页面。 – Dani 2009-10-27 15:25:17

我相信一个网页(当然在客户端)执行在单线程。如果你的“onsubmit”调用函数的踪迹,这取决于你,但在某些时候你会(或许)想要submit()表单。

换句话说(在你的具体情况下),所有的函数跟踪都会一直持续到表单被发送。

另一方面,如果按下“重新加载”按钮,则执行为终止

当浏览器刷新一个页面时,浏览器会在服务器上调用页面及其组件的新副本(CSS,JS等等,如果没有缓存的话)。

如果该页面是POST调用,浏览器将再次POST数据。

页面已完成加载:

当完全加载,在服务器端执行应该完成的(除非你执行额外的过程,或运行后台代码不会数据再发送到客户端)。

页面加载中途通过:

当前页面的连接将立即断开 - 如果页面仍在加载。它取决于服务器是否让页面继续运行或终止。例如在PHP中,我们可以使用ignore_user_abort()来保持脚本运行,即使页面在加载过程中终止。

如果你的服务器是ASP,和你点击一个ASP按钮,按钮的动作(方法)将完全在服务器端,即使用户刷新中途完成。这就是ASP.NET框架的完成方式。

+1

将页面发送到客户端浏览器后,服务器与**无关,直到**客户希望执行其他操作。 – jldupont 2009-10-27 15:22:08

+0

当然,服务器可以通过延迟发送数据流的结束来保持客户端...但这是另一回事。 – jldupont 2009-10-27 15:23:06

+0

@jldupont - 页面加载时(页面内容 - 不是外部组件),服务器仍然与客户端有连接。 – mauris 2009-10-27 15:23:37

所有funcs中会被执行,即使你有刷新,你可以做一个测试。但在.NET它提供的功能来检查,如果客户端仍然与服务器连接(你的第一个提交,意味着服务器可以检查客户正在等待你提交后,可随时响应)