尝试 'PURGE' 使用 curb 清漆
trying 'PURGE' varnish using curb
我正在尝试使用 'curb' gem 向我们的清漆盒发送 'PURGE' 请求,问题是它似乎不起作用。
我不知道它是否失败是因为它没有在我们的清漆盒中实现(它应该已经实现)或者因为 curb 没有将请求作为清除发送而是作为获取发送。
下面是实际发出请求的函数:
def make_request_of (request_method)
self.curl = Curl::Easy.new(self.uri) do |http|
setup_request request_method, http
end
self.curl.ssl_verify_peer = self.ssl ||false
self.curl.http request_method
if self.curl.response_code == 301
self.uri = self.curl.redirect_url
make_request_of request_method
end
end
def setup_request method,http
http.headers['request-method'] = method.to_s
http.headers.update(headers)
http.max_redirects = self.redirects || 3
http.post_body = self.payload || nil
http.http_auth_types = self.auth_type || nil
http.username = self.username || nil
http.password = self.password || nil
http.useragent = "curb"
http
end
当 运行(有两个清漆盒的 IP)时,我得到这个:
- 200
- 200
- 正确
此函数返回的值为 true:
def flush pattern
results = ::YAML.load_file(self.varnish_ip_files_path).map do |ip|
http = VCK::Http.request do
set_uri "http://#{ip}/#{pattern}"
end
http.make_request_of 'PURGE'
puts http.response
case http.response
when 200
true
else
false
end
end
!(results.reject! { |r| r }.length >= 1)
end
我试过使用 this answer 发送 'PURGE' 请求,特别是:
# see lib/curl.rb
module Curl
# ...
def self.patch(url, params={}, &block)
http :PATCH, url, postalize(params), nil, &block
end
# ...
end
原来是 varnish 后端,需要对其进行重新工具以禁止而不是清除,需要使其正常工作,但最终我的代码没问题。
我正在尝试使用 'curb' gem 向我们的清漆盒发送 'PURGE' 请求,问题是它似乎不起作用。
我不知道它是否失败是因为它没有在我们的清漆盒中实现(它应该已经实现)或者因为 curb 没有将请求作为清除发送而是作为获取发送。
下面是实际发出请求的函数:
def make_request_of (request_method)
self.curl = Curl::Easy.new(self.uri) do |http|
setup_request request_method, http
end
self.curl.ssl_verify_peer = self.ssl ||false
self.curl.http request_method
if self.curl.response_code == 301
self.uri = self.curl.redirect_url
make_request_of request_method
end
end
def setup_request method,http
http.headers['request-method'] = method.to_s
http.headers.update(headers)
http.max_redirects = self.redirects || 3
http.post_body = self.payload || nil
http.http_auth_types = self.auth_type || nil
http.username = self.username || nil
http.password = self.password || nil
http.useragent = "curb"
http
end
当 运行(有两个清漆盒的 IP)时,我得到这个:
- 200
- 200
- 正确
此函数返回的值为 true:
def flush pattern
results = ::YAML.load_file(self.varnish_ip_files_path).map do |ip|
http = VCK::Http.request do
set_uri "http://#{ip}/#{pattern}"
end
http.make_request_of 'PURGE'
puts http.response
case http.response
when 200
true
else
false
end
end
!(results.reject! { |r| r }.length >= 1)
end
我试过使用 this answer 发送 'PURGE' 请求,特别是:
# see lib/curl.rb
module Curl
# ...
def self.patch(url, params={}, &block)
http :PATCH, url, postalize(params), nil, &block
end
# ...
end
原来是 varnish 后端,需要对其进行重新工具以禁止而不是清除,需要使其正常工作,但最终我的代码没问题。