相关疑难解决方法(0)

使用Safari和Apache 2.2.3获取Javascript /图像资源时,为什么有些页面请求会挂起?

我们的Ruby on Rails应用程序的一些用户抱怨说,页面请求偶尔会在Safari下无限期挂起(一对夫妇在Firefox下注意到它,但它绝大多数都是Safari用户).经过一些调查后,我们的Rails应用程序似乎正确地提供了这些请求,并且在获取HTML中引用的图像资源(托管在同一服务器上)时发生挂起.

我们已将Apache配置为直接为图像资源提供服务,并绕过Rails应用程序以提高性能.我们还在text/javascript/css资产上启用了gzip压缩.以下是我们的Apache虚拟主机配置中的相关设置 - 也许我们已经以这样的方式配置了这可以解释这些任意挂起请求?

RewriteEngine On

# Correct behaviour of IE under SSL
SetEnvIf User-Agent ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

SSLEngine On
SSLCertificateFile /etc/httpd/conf/ssl/_.mycert.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/_. mycert.com.key
SSLCertificateChainFile /etc/httpd/conf/ssl/gd_bundle.crt

RequestHeader set X_ORIGINAL_PROTOCOL 'https'
RequestHeader set X_FORWARDED_PROTO 'https'

# Rewrite index to check for static
RewriteRule ^/$ /index.html [QSA] 
RewriteRule "^/(images|stylesheets|javascripts|system)/?(.*)" "$0" [L]

# Rewrite to check for Rails cached page
RewriteRule ^([^.]+)$ $1.html [QSA]

# Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
BrowserMatch ^Mozilla/4 …
Run Code Online (Sandbox Code Playgroud)

apache safari ruby-on-rails

5
推荐指数
1
解决办法
4260
查看次数

使用 Ajax 和 PHP 进行长轮询 - Apache 冻结

我们尝试在我们公司的 ERP 中实现基于长轮询的通知服务。类似于 Facebook 通知。

使用的技术:

  • PHP在循环的每次迭代中timeout设置为 60 秒和 1 秒sleep
  • 用于 AJAX 处理的 jQuery。
  • Apache 作为网络服务器。

经过近一个月的编码,我们进入了生产阶段。部署几分钟后,我们不得不回滚一切。事实证明,我们的服务器(8 核)无法处理来自 20 名员工的长请求,每个员工使用约 5 个浏览器选项卡。例如:用户使用我们的 ERP 打开了 3 个选项卡,每个选项卡上都有一个长轮询 AJAX。打开第 4 个选项卡是不可能的 - 它会挂起,直到前 3 个选项卡中的一个被杀死(因此 AJAX 停止)。

“Apache 的局限性”,我们认为。所以我们去谷歌搜索。我找到了一些关于 Apache 的 MPM 模块和配置的信息,所以我试了一下。我们的服务器使用preforkMPM,apachectl -l如图所示。所以我在配置中更改了几行,看起来像这样:

<IfModule mpm_prefork_module>
    StartServers          1
    MinSpareServers       16
    MaxSpareServers      32
    ServerLimit          50%
    MaxClients          150
    MaxClients           50%
    MaxRequestsPerChild   0
</IfModule>
Run Code Online (Sandbox Code Playgroud)

有趣的是,它可以在我的本地机器上使用类似的配置运行。在服务器上,看起来 Apache 忽略了配置,因为MinSpareServers设置为 16,它在重新启动后启动 8。当他不知道该怎么做。

php apache ajax long-polling

5
推荐指数
1
解决办法
6493
查看次数

在页面数据中寻址的URL?

我们有一个JavaScript小部件,可以从URL加载数据.

为了减少往返,我想避免第二个HTTP请求并将数据放入HTML页面.

如果我可以保持JavaScript小部件保持不变,那将会很棒.

是否有URL方案从当前HTML页面读取数据?

示例:而不是https://....这个dom://....

javascript url dom

5
推荐指数
1
解决办法
135
查看次数

我怎样才能限制角度$ q承诺并发?

我该怎么做$q.all但限制同时执行多少个promises?

我的问题就像我如何限制Q promise并发?

我希望一次产生的过程不超过5个

对于另一个问题,接受的答案是为了与Q一起工作而承诺的图书馆.但我特别感兴趣的是Angular的解决方案,而不是.$qQ

背景:问题正在解决:
我有两个步骤下载的文件:a)获取URL b)下载文件.
浏览器限制了可以同时检索多少文件,因此当直接使用promises时$q.all会触发所有下载,只有
N会立即发生,例如Chrome中的6,而其余​​文件会延迟.(请参阅浏览器中的Max并行http连接?)
问题是URL已过期,因此当浏览器执行第 N + 1 文件下载时,URL不再有效.
所以我想做的事情throttled.all(6, promises)而不是$q.all(promise)

concurrency promise angularjs angular-promise

5
推荐指数
1
解决办法
1382
查看次数

Angular - http 拦截器 - http 速率限制器 - 滑动窗口

我有一个用例,我需要限制传出 http 请求的数量。是的,我确实在服务器端有速率限制器,但前端也需要限制活动 http 请求的数量。因此,我正在尝试实现一个滑动窗口协议,在任何时候我都会只有 n 个活跃请求。

这种使用 Rxjs 的方法通常工作得很好,请参见此处: https: //jsbin.com/pacicubeci/1/edit ?js,console,output

但我不清楚如何对 http 拦截器使用相同的逻辑。我的以下尝试在编译时失败,并出现以下错误:

“Subscription”类型缺少“Observable<HttpEvent>”类型中的以下属性:_isScalar、source、operator、lift 以及其他 114 个属性。(2740)

这样,我怎样才能返回一个可观察对象并同时在http拦截器中维护一个队列?我的方法有缺陷吗?我可以使用 http 拦截器来限制 http 速率吗?

@Injectable()
export class I1 implements HttpInterceptor {
  intercept(
    req: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    const modified = req.clone({ setHeaders: { "Custom-Header-1": "1" } });

    return next
      .handle(req)
      .do((ev: HttpEvent<any>) => {
        if (ev instanceof HttpResponse) {
          console.log(ev);
        }
      })
      .pipe(
        bufferTime(1000, null, 1),
        filter(buffer => buffer.length > 0),
        concatMap(buffer => of(buffer).pipe(delay(1000)))
      )
      .subscribe(console.log);
      } …
Run Code Online (Sandbox Code Playgroud)

sliding-window rxjs angular-http-interceptors angular rxjs-subscriptions

5
推荐指数
1
解决办法
1974
查看次数

跨不同域共享CSS样式表

我正在研究两个不同的WordPress网站,这些网站在许多方面相似,但皮肤不同.

例如,假设我正在处理两个"杂志"网站,它们共享相同的CSS布局,例如网格系统,边距等,但不同的CSS装饰属性,例如渐变,颜色,阴影.

让他们分享相同的基本CSS布局,但不同的装饰CSS的最佳方法是什么?

最初我觉得像......

<link rel="stylesheet" type="text/css" media="all" href="LINK-TO-BASE-CSS-ON-PRIMARY-DOMAIN.css" />
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'template_url' ); ?>/style.css" /> <!-- This would be the 'top-up' CSS -->
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎并不特别干净.我承认,不过,也有一个非常类似的问题在这里.

这仍然被认为是最好的方式吗?链接到另一个域有什么缺点吗?我已经读过,由于跨域加载,这甚至可能是一个优势.

css wordpress cross-domain

4
推荐指数
1
解决办法
5983
查看次数

如何增加扩展发起的并发下载数?

我有一个扩展程序,它在其后台页面中启动下载。当前的问题是,当您调用 chrome.downloads.download 时,例如 100 次,它将一次下载 5 个文件,直到所有 100 个文件都已下载。

google-chrome google-chrome-extension

4
推荐指数
2
解决办法
2万
查看次数

为什么 ASP.NET Core 不并行处理我的请求?

我有一个像这样的简单动作:

[HttpGet]
public async Task<string> GetHtml()
{
    Console.WriteLine("Run=======================================================");
    await Task.Delay(5000);
    Console.WriteLine("End=======================================================");
    return "ok";
}
Run Code Online (Sandbox Code Playgroud)

我快速打开三个窗口,然后转到该 URL。我预计结果如下:

Run=======================================================
Run=======================================================
Run=======================================================
End=======================================================
End=======================================================
End=======================================================
Run Code Online (Sandbox Code Playgroud)

但是,事实并非如此!相反,结果是:

Run=======================================================
End=======================================================
Run=======================================================
End=======================================================
Run=======================================================
End=======================================================
Run Code Online (Sandbox Code Playgroud)

此外,当第一次运行完成后,第二次请求开始。为什么?

c# asp.net asp.net-core-mvc asp.net-core

4
推荐指数
1
解决办法
103
查看次数

如何以最大并行请求数发送 1000 个 XHTTP 请求

我有一个 Angular 应用程序,需要发送 N 个 XHTTP 请求,其中 1 <= N <= 10000。

应用程序需要尽可能快地处理它,因此最好同时有多个活动的 XHTTP 请求,并具有同时多个请求的滑动窗口。由于服务器端 API 限制,无法使用 WebSocket 或其他类似流式处理的解决方案。

我的第一个想法是使用RxJS forkJoin之类的东西,但我很难限制并发请求数。据我所知,API 对最大请求数有限制,例如Chrome 只允许 8 个并发请求。

我发现的大多数解决方案/教程要么 a.) 不限制最大并发连接数,要么 b.) 不动态更新(超时解决方案对此任务效率不高)。

例如:

const test = () =>
  request(`https://swapi.co/api/people/1/`)
    .pipe(
      delay(1000),
      switchMap(response => from(response.films)),
      concatMap((url: string) => request(url).pipe(delay(1000))),
      scan((acc, res) => [...acc, res.title], []),
      tap(console.log)
    )
    .subscribe()
Run Code Online (Sandbox Code Playgroud)

这对我来说不好,因为限制是通过延迟实现的,但我想实现类似基于线程的解决方案:最多有 Y 个并发连接,如果一个连接完成,则立即启动一个新请求。

const test = () =>
  request(`https://swapi.co/api/people/1/`)
    .pipe{
      switchMap(response => from(response.films)),
      specialOperatorIAmLookingFor((url: string) => request(url), 8),   // …
Run Code Online (Sandbox Code Playgroud)

xmlhttprequest rxjs angular

4
推荐指数
1
解决办法
2301
查看次数

有没有办法调试 chrome 请求排队的原因?

背景:Chrome 有一个请求队列。在某些情况下,它会对可延迟的请求进行排队。但我发现很难确定哪些请求导致请求排队。

我的问题是:我们有办法深入了解排队问题的根本原因吗?

源代码

镀铬文档

networking google-chrome request-queueing chromium

4
推荐指数
1
解决办法
4700
查看次数