小编Rub*_*cer的帖子

NGINX/PHP-FPM:Ajax第一次请求缓慢,下一次请求很好

  • CMS是Elxis来自Joomla(PHP)的变种.
    • 服务器正在运行nGinxPHP-FPM
    • 所有请求都被记录并执行,最终,但是!

通过URL栏触发特定请求时,请求立即执行.但是,当通过ajax(通过jQuery)触发时,相同的请求有一个非常奇怪的行为.

即:首先请求(在媒体管理器上)查看图片细节,将使用Ajax解雇.它记录在浏览器上,但不在服务器上...不仅仅是......经过一段时间40-50秒后,请求出现在服务器上,然后立即响应.

以下所有请求都会立即执行,没问题.只有第一个是粗糙的......

我遇到了麻烦,因为在任何地方都没有记录任何错误:除了第一个到达服务器的请求的延迟之外,一切似乎都很清晰...

它不是路由(站点已经启动并且已经提供了请求),它不是解析(ip在我的/ etc/hosts文件中).

并且在蛋糕上添加一点樱桃,尝试在服务器上捕获数据包(tcpdump)不产生输出:请求还没有在这里...也在客户端上尝试:没有输出 - 至少40秒.. .

这一切都在浏览器上,开发者控制台显示没有错误,只是一个挂起的请求.

这对任何人都响铃吗?

The server:
nginx version: nginx/1.6.2
PHP 5.6.7-1 (cli)
PHP 5.6.7-1 (fpm-fcgi)
Run Code Online (Sandbox Code Playgroud)

jQuery版本1.11
客户端:尝试使用Firefox 39(ubuntu)和Chromium 41

php ajax jquery nginx

7
推荐指数
1
解决办法
1242
查看次数

代理后面的Rails应用程序,使用SSL,将路径呈现为"http://"

首先,这听起来更像是一个错误,然后是其他任何东西.

我的rails应用程序由Unicorn提供服务.然后,使用Nginx作为反向代理,我使用SSL将应用程序提供给外部世界.

到目前为止这么好,没问题.我正在使用相对路径(Restful path helpers),所以生成它应该没有问题(对于https://www.example.com):

new_entry_path => https://www.example.com/entries/new
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这样做很好.

然而,在控制器中我尝试重定向到"显示"操作(使用资源)时出现问题,假设在成功更新后(假设条目为id 100):

redirect_to @entry, flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)

要么

redirect_to entry_path(@entry), flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)

他们都产生了重定向:

http://www.example.com/entries/100 # missing 's' in https...
Run Code Online (Sandbox Code Playgroud)

代替

/entries/100 # implying https://www.example.com/entries/100
Run Code Online (Sandbox Code Playgroud)

据我所知,这只发生在show动作中,仅在控制器重定向中发生.

做一些可怕而恶心的事情,我绕过了这个:

redirect_to entry_url(@entry).sub(/^http\:/,"https:"), flash: {success: "Entry has been updated"}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到类似的东西?任何想法都将被感激地接受......

ssl proxy ruby-on-rails nginx unicorn

3
推荐指数
1
解决办法
1854
查看次数

Angular指令访问控制器 - 奇怪的'ungoogled'消息

我正在尝试编写一个元素指令,我将其附加到控制器,以实现类似排序的行为.这是指令

.directive('sorting', function () {
        return {
            restrict: 'E',
            scope: false, // I know I can omit this with no effect
            template: function (elem, attr) {
                return '<div><a href ng-click="setsort('+"'"+attr.sortkey+"'"+')">'+attr.headtext+'</a></div>'+
                      '<div ng-show="sortfield=='+"'"+attr.sortkey+"' || sortfield='-"+attr.sortkey+"'"+
                      '" ng-class="{'+"'sortreverse':sortreverse}"+'">&#9650;</div>';
                  }
            }
        });
Run Code Online (Sandbox Code Playgroud)

setsort(sortkey),sortfield并且sortreverse属于控制器的范围.

预期的行为是,&#9650;只有在为指定元素选择了排序时才应显示caret().

排序按计划工作,但插入符号显示在所有排序列中,我得到一个奇怪的错误消息,我没有找到任何可用的反馈.

错误说:

Error: [$parse:lval] Trying to assing a value to a non l-value
http://errors.angularjs.org/1.4.5/$parse/lval
minErr/
[....a whole stacktrace ...]
"<div ng-show="sortfield=='yn_equivalent' || sortfield='-yn_equivalent'" ng-class="{'sortreverse':sortreverse}">"
Run Code Online (Sandbox Code Playgroud)

有趣的事实:错误的第一行实际上是由angularjs拼写错误的(应该assign代替assing)

当被召唤时,最后一行是指令生成的输出的一部分:

<sorting …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-scope

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