什么';phalcon中重定向和分派的区别是什么?

什么';phalcon中重定向和分派的区别是什么?,phalcon,Phalcon,当我想从另一个页面切换到另一个页面时,我可以找到$this->dispatcher->forward()和$this->response->redirect()。两者似乎都很好用 它们之间有什么区别,什么时候应该使用一个而不是另一个?广义上说,重定向将执行http重定向(带有标头位置)。这意味着客户端的浏览器将更改页面。它处理到一个新的路由(也可以用于转到另一个网站),实际的脚本将结束 而转发是内部的,客户端的浏览器不会看到任何差异,您只需执行不同的控制器。调度循环允许用户将执行流转发到另一个控

当我想从另一个页面切换到另一个页面时,我可以找到
$this->dispatcher->forward()
$this->response->redirect()
。两者似乎都很好用


它们之间有什么区别,什么时候应该使用一个而不是另一个?

广义上说,
重定向将执行http重定向(带有标头位置)。这意味着客户端的浏览器将更改页面。它处理到一个新的路由(也可以用于转到另一个网站),实际的脚本将结束

转发
是内部的,客户端的浏览器不会看到任何差异,您只需执行不同的控制器。调度循环允许用户将执行流转发到另一个控制器/操作。这对于检查用户是否可以访问某些选项、将用户重定向到其他屏幕或只是重用代码非常有用。但是,请记住,进行“转发”与进行HTTP重定向不同。虽然他们显然得到了同样的结果。“转发”不会重新加载当前页面,所有重定向都发生在一个请求中,而HTTP重定向需要两个请求才能完成该过程

类似的类比也可以在JSP中显示

HttpServletResponse
sendRedirect(字符串路径)
方法将告诉客户端它应该向指定路径发送请求。因此,客户端将构建一个新请求并将其提交给服务器。客户端的历史记录将被更新,以便“前进”和“后退”按钮可以工作。此方法对于重定向到其他服务器和域上的页面非常有用

RequestDispatcher
的forward方法将
ServletRequest
ServletResponse
转发到
getRequestDispatcher(字符串路径)中指定的路径.
响应将不会发送回客户端,因此客户端将不知道服务器上资源的此更改。此方法对于服务器资源(servlet到servlet)之间的通信非常有用。此方法比使用
sendRedirect
更快,因为不需要网络往返服务器