Get the ETag from Redis on a GET request
This prevents doing a network request when we would return a 304 anyway
This commit is contained in:
@@ -46,17 +46,18 @@ module RemoteStorage
|
||||
end
|
||||
|
||||
def get_data(user, directory, key)
|
||||
none_match = (server.env["HTTP_IF_NONE_MATCH"] || "").split(",")
|
||||
.map(&:strip)
|
||||
.map { |s| s.gsub(/^"?W\//, "") }
|
||||
etag = redis.hget redis_metadata_object_key(user, directory, key), "e"
|
||||
server.halt 304 if none_match.include? %Q("#{etag}")
|
||||
|
||||
url = url_for_key(user, directory, key)
|
||||
|
||||
res = do_get_request(url)
|
||||
|
||||
set_response_headers(res)
|
||||
|
||||
none_match = (server.env["HTTP_IF_NONE_MATCH"] || "").split(",")
|
||||
.map(&:strip)
|
||||
.map { |s| s.gsub(/^"?W\//, "") }
|
||||
server.halt 304 if none_match.include? format_etag(res.headers[:etag])
|
||||
|
||||
return res.body
|
||||
rescue RestClient::ResourceNotFound
|
||||
server.halt 404, "Not Found"
|
||||
|
||||
Reference in New Issue
Block a user