我已经在http://95.85.19.39/上设置了一个测试服务器,在Ubuntu 14.04上运行了varnish 4.1.5(端口80)和nginx 1.4.6(端口8080)。我使用的是Chrome 57.0.2987.110(64位)。
Varnish正在缓存页面,但当你等待5秒以上并点击刷新时,你会看到一个初始连接,为什么会这样?当您在5秒内点击刷新时,将不会有初始连接。
如果我删除了清漆并在Nginx上运行服务器,那么我将不再获得初始连接,所以我认为我的清漆有问题。
有谁知道为什么会这样,我将如何解决这个问题呢?
for (Key ki : this.keyboard.getKeys()) {
switch (Integer.parseInt(String.valueOf(ki.codes[0]))) {
case Utils.SHIFT_CODE:
ki.icon = this.shiftOffDrawable;
break;
case Utils.KEYCODE_NUMBERS1:
ki.label = ki.label;
break;
case Utils.KEYCODE_NUMBERS:
ki.label = ki.label;
break;
case Utils.KEYCODE_ALPHABETS:
ki.label = ki.label;
break;
case -5:
ki.icon = deleteDrawable;
ki.repeatable = true;
break;
case -4:
ki.icon = enterDrawable;
break;
case ValueAnimator.INFINITE:
ki.icon = shiftOffDrawable;
break;
case 32:
ki.icon = spaceDrawable;
break;
default:
break;
}
}
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/sites-enabled/default.conf;
}
server {
listen 8080;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.(htaccess|htpasswd|ini|phps|fla|log|sh)$ {
deny all;
}
}
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
}
sub vcl_backend_response {
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
答案 0 :(得分:1)
你观察到的是正常的。 Varnish 4中的默认保持活动值为5秒。
第一个请求涉及额外的TCP开销。如果第二个请求在5秒内发生,则通过现有的TCP连接执行,并且没有"初始连接"将会节省一些时间。
如果您希望keepalive超时超过5秒,则可以增加Varnish客户端超时。
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m" \
-p timeout_idle=75