0

Facebook 使用带有范围选项的 curl 来检索页面的 HTML 以进行共享。Varnish 只返回页眉信息而不是 html。这是我会说 75% 到 80% 的时间的结果。每隔一段时间它就会返回正确的结果

任何人都有一个想法如何解决这个问题。

例子

#curl -v -H Range:bytes=0-524288 http://americanactionnews.com/articles/huge-protest-calls-for-death-to-usa-demands-isis-control
*   Trying 52.45.101.42...
* TCP_NODELAY set
* Connected to americanactionnews.com (52.45.101.42) port 80 (#0)
> GET /articles/huge-protest-calls-for-death-to-usa-demands-isis-control HTTP/1.1
> Host: americanactionnews.com
> User-Agent: curl/7.51.0
> Accept: */*
> Range:bytes=0-524288
>
< HTTP/1.1 206 Partial Content
< Content-Type: text/html; charset=utf-8
< Status: 200 OK
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< Date: Fri, 23 Dec 2016 16:39:46 GMT
< Cache-Control: max-age=300, public
< X-Request-Id: 8007fb76-3878-430d-845c-06a8710ae1ae
< X-Runtime: 0.247333
< X-Powered-By: Phusion Passenger 4.0.55
< Server: nginx/1.6.2 + Phusion Passenger 4.0.55
< X-Varnish-TTL: 300.000
< X-Varnish: 65578
< Age: 0
< Via: 1.1 varnish-v4
< X-Cache: MISS
< Transfer-Encoding: chunked
< Connection: keep-alive
< Accept-Ranges: bytes
< Content-Range: bytes 0-15/16
<
* Curl_http_done: called premature == 0
* Connection #0 to host americanactionnews.com left intact 
4

2 回答 2

1

我们已经找到了答案,并根据以下链接对我们的清漆进行了一些修改,它似乎正在工作。 https://info.varnish-software.com/blog/caching-partial-objects-varnish

于 2016-12-23T19:49:23.640 回答
0

看起来问题实际上是您的后端服务器(Nginx)。特别是考虑到您提到的类似命中率的成功率 :) 另外,失败的示例是 MISS(从后端服务器交付)。

确保您的 Nginx 配置中没有任何阻止范围请求的内容,即打破它的一件流行的事情是:

ssi on;
ssi_types *;
于 2016-12-23T18:06:54.590 回答