为什么 HTTP 请求在 Chrome 中陷入挂起状态?

2024-04-25

语言/工具版本:

  1. @角度/cli:1.2.0
  2. PHP 7.0.8
  3. Zend 表达 2
  4. 阿帕奇2.4.23
  5. 铬65.0.3325.181
  6. Windows 7的

Issue:

我有一个 Angular2 应用程序,它使用 PHP 应用程序作为所有 XHR 请求的 API。该应用程序工作正常,但当Use a prediction service to load pages more quicklyChrome 中启用了该选项,并且当应用程序重新加载时,内部发送 HTTP 请求ngOnInit()组件的卡住很长时间。请求将在 10 秒-2-3 分钟后自行解决,等等,或者如果我发送另一个请求(例如,针对 DOM 上的单击事件的请求),请求也将得到解决

我尝试过的事情:

  1. 我浏览了多个帖子(例如1 https://stackoverflow.com/questions/30990737/chrome-request-pending-for-long-time, 2 https://stackoverflow.com/questions/5585918/what-does-pending-mean-for-request-in-chrome-developer-window, 3 https://stackoverflow.com/questions/28010156/stalled-and-pending-ajax-requests-by-jquery-in-chrome/30068579等)有类似的问题,但没有一个是非常 有用,我读到如果我有多个 HTTP 请求,可能会发生这种情况。就我而言,我尝试隔离请求,现在我在组件初始化时仅发送一个请求。即使只有一个请求也会被卡住。我的控制台将显示失败GET请求然后一直等待,解决后就会成功OPTIONS请求然后成功GET.
  2. 我不确定这是否是我的前端 Angular 的问题 应用程序或后端 PHP 应用程序,因此在初始化时 在该组件中,我调用了一个随机 API 端点:http://api.randomuser.me/而不是请求我的 API 端点。 在这种情况下,请求成功,没有任何延迟(尽管 显示 CORS 错误)。所以我认为问题出在我的 后端 API 或 Apache Web 服务器。
  3. 我试图查看是否有什么原因导致 API 中的延迟,但直到浏览器的请求成功后,应用程序的入口点本身才会被命中。

我也想分享我的虚拟主机配置。如果您发现任何问题:

<VirtualHost *:80>
ServerName someName.api
DocumentRoot path_to_public_dir
SetEnv APPLICATION_ENV development
<Directory path_to_public_dir>

    SetEnvIf Origin "http(s)?://(www\.)?(local\.)?(localhost:4200|someDomain.com)$" AccessControlAllowOrigin=$0
    Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin

    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} –d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    Options -Indexes +MultiViews +FollowSymLinks
    AllowOverride none
    Order Allow,Deny
    Allow from all
</Directory>

请注意:

  • 我也尝试过设置Access-Control-Allow-Origin应用程序本身内部的标头,但仍然没有运气。
  • 该应用程序在 Mozilla 或 Chrome 上运行良好 预测服务未启用

您对这种行为的可能原因的建议/答案将会非常有帮助。


好吧,我认为,执行以下操作已经消除了我的机器的延迟。

在解决这个问题之前,我先说一下我的假设:

  1. 每当“预测服务到 快速加载页面已启用”
  2. 我的 Apache Web 服务器没有处理这些并行请求。

解决方案:

  1. 我包括了mpm https://httpd.apache.org/docs/2.4/mpm.htmlApache 的模块文件。您可以找到 线下方httpd.conf file:

    #Include conf/extra/httpd-mpm.conf并取消注释。

    Windows 使用mpm_winnt_模块 https://httpd.apache.org/docs/2.4/mod/mpm_winnt.html对于 mpm。

    此多处理模块 (MPM) 是 Windows NT 操作系统的默认设置。它使用单一控制过程 启动一个子进程,该子进程又创建线程 处理请求

  2. 找到下面几行并取消注释:

    EnableMMAP off        
    EnableSendfile on
    
    AcceptFilter http none
    AcceptFilter https none
    
    #Extra Notes
    #mmap is memory map by apache, don't know I have uncommented this, had read about
    this somewhere, but anyway its Off so should not be a Burden on OS
    #EnableSendFile:Delivering static files? This link may help:
    https://groups.drupal.org/node/68333
    #AcceptFilter: windows mpm module, suggests to keep it as none. 
    I went through this : https://httpd.apache.org/docs/2.4/mod/core.html
    and have set AcceptFilter http/https as "connect", it works fine for me. 
    Please note: I am using Apache 2.4.23
    
  3. 重新启动你的阿帕奇

就是这样!

我不接受这个问题,因为:

  1. 我不知道我所做的是否正确。
  2. 虽然我启用了winnt模块,我找不到该模块 文件位于我的 apache 目录中的任何位置,尽管发生了更改 ThreadsPerChild 已反映出来,我猜 apache 不需要 外部的winnt module.
  3. 虽然我可以观察到页面加载速度有所提高并且 请求不再卡住,我仍然可以看到交错的failed and finshed对我的 chrome 中的每个请求的请求 安慰。

您的回答将非常有价值,并使事情变得更加清晰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 HTTP 请求在 Chrome 中陷入挂起状态? 的相关文章

随机推荐

  • 输出字符串末尾的空白不与字符串一起打印,而是与其后的下一个打印行一起打印

    我尝试打印一行 要求用户输入 获取输入 然后再次打印一些行 问题是 在我获得输入后 第一个打印行末尾的空白不是打印在该行的末尾 而是打印在第二个打印行的开头 我对 C 完全陌生 所以我不能真正尝试太多 但我尝试在没有提示用户输入的部分的情况
  • Spring消息标签javascript转义

    当我们尝试使用 spring 标签显示属性文件中的标签时 我们可以编写
  • 我可以获取标准库中定义的函数的地址吗?

    考虑以下代码 include
  • 使用 Windows.Services.Store Addons 模拟购买

    我编写了一个基于 Windows Services Store 的应用内购买系统 现在我希望确保我的用户得到他们所付出的代价 在旧的 API 中 我可以模拟购买 我怎样才能让每次购买成功 而不需要每次都从我的信用卡 贝宝中注入真钱 我无法返
  • 了解事件的前一个处理程序是否返回 false。 IE < 9 中的默认阻止?

    我设置了一个全局模式 正在加载 请稍候 div 在一个应用程序中 它每次都会显示 a or a div
  • Visual Studio Code 安装位置

    我几天前安装了 Visual Studio Code 但现在在我的计算机上找不到可执行文件 它在哪里 我已经检查了程序和功能 我还检查了我的路径 由于某种原因 它也不在其中 更新 10 11 2018 如果您进行完全重新安装 包括卸载计算机
  • 函数定义上的纯说明符

    在 GCC 上编译时我得到了错误 函数定义上的纯说明符 但当我使用 VS2005 编译相同的代码时则不然 class Dummy error pure specifier on function definition VS2005 comp
  • 如果我是 Python 新手,我应该使用哪个版本的 Python?

    如果我对 Python 完全陌生 并且正在阅读有关将语句打印到控制台 变量类型 集合等的内容 我应该使用哪个版本的 Python 我知道有大量适用于 Python 2 6 x 的第三方库 但我担心我会学到一些不能很好地移植到 Python
  • Vala vapi 文件文档

    我想使用 Vala 破解现有的基于 GLib 的 C 项目 基本上我正在做的是 在构建过程开始时 使用 valac 从 vala 文件生成 c 和 h 文件 然后像编译任何 c 或 h 文件一样编译生成的文件 这可能不是最好的方法 但在大多
  • Total Blank Unity / Microsoft Store Build 未通过 WACK 测试

    我一直在努力为我的游戏取得成功统一 2018 2 1f1 and 视觉工作室 2017 15 8 0 尝试为 Windows 商店成功构建 打包 WACK 失败后所有 每个不同的配置 我尝试了完全空白默认Unity UWP平台应用程序 生成
  • 下边框边距

    有什么方法可以只在边框上添加边距吗 只有边框应该有边距 而不是文本 我正在尝试移动边框而不是文本字段 需要缩小 移动边框而不是文本 CSS margin check border bottom 1px solid d2d7da margin
  • (已解决)插件选项不允许使用多个值 androidx.compose.compiler.plugins.kotlin:reportsDestination

    我正在使用 Android Studio 与 Kotlin 进行 Android 开发 我的项目中有40多个Android模块 其中一些是Java模块 一些主题是android模块 Kotlin Version 1 8 20 Hilt Ve
  • 在 WinForms 表单之间传递数据[重复]

    这个问题在这里已经有答案了 我在项目中创建了一个辅助表单 它可以从主表单获取数据 并且在单击按钮时应将一些数据传递到主表单 这是代码 Add cs private void button1 Click object sender Event
  • 将响应缓冲区转换为 JSON

    在 AWS 中 我使用 https 模块通过 Lambda 发出 get 请求 我能够返回数据 但当我调用时它是缓冲区格式的callback null obj https get options res gt res on data d g
  • 为什么我无法计算正确的 HMAC 签名?

    我正在尝试在 Google Apps 脚本中计算 HMAC 签名 但文档并未 100 清楚地说明我需要如何传递参数 并且我无法获得预期的输出 为了确定我是否获得正确的输出 我将结果与已知良好的 PHP 代码进行比较 该代码是 key a2V
  • 如何为一系列任务设计执行引擎

    我正在尝试用 Java 编写一个问题 我必须执行一堆任务 Problem 执行由多个任务组成的作业 并且这些任务之间具有依赖关系 一个作业将有一个任务列表 每个这样的任务将进一步有一个后续任务列表 每个后续任务将有自己的后续任务 您可以在此
  • _ftol2_sse,有更快的选择吗?

    我有调用很多的代码 int myNumber int floatNumber 这总共占用了我大约 10 的 CPU 时间 根据分析器 虽然我可以就这样 但我想知道是否有更快的选择 所以我尝试四处搜索 并偶然发现 http devmaster
  • 如何使用jquery从字符串中获取第一个字母[重复]

    这个问题在这里已经有答案了 我对 jquery 的了解很差 我已经提到了下面的脚本 var header time col text alert header 我从如何获取第一个字母 例如 1 中得到了字符串 109 00AM 请你帮助我好
  • 无法从字符串中删除“\r\n”

    我有一个像这样的字符串 la lala 135 1039 921 r n 而且我无法删除 r n 最初这个字符串是一个字节对象 但后来我将它转换为字符串 我尝试过 strip r n 与 replace r n 但什么也没有 gt gt g
  • 为什么 HTTP 请求在 Chrome 中陷入挂起状态?

    语言 工具版本 角度 cli 1 2 0 PHP 7 0 8 Zend 表达 2 阿帕奇2 4 23 铬65 0 3325 181 Windows 7的 Issue 我有一个 Angular2 应用程序 它使用 PHP 应用程序作为所有 X