LWP::UserAgent::SemWebCache - LWP::UserAgent for caching SPARQL Queries
This is a slight modification of LWP::UserAgent::CHICaching, and can be used much like it:
my $cache = CHI->new( driver => 'Memory', global => 1 ); my $ua = LWP::UserAgent::SemWebCache->new(cache => $cache); my $res1 = $ua->get("http://localhost:3000/?query=DAHUT");
For now, it makes a relatively uncertain assumption that could in some cases violate Section 4.1 of RFC7234 and cause unpredictable results: Since SPARQL results come in different serializations, the
Vary header will be present in most cases, and therefore, different caches would usually have been required. However, if we assume that no variations that are semantically significant could occur, then we should be OK. Unless, of course, the server declared that anything goes, which amount to setting
Vary: *, in that case, we don't cache.
Additionally, since the URI resulting from a SPARQL protocol query might be long, and long keys are often difficult for backend caches, so the reimplementation of
key will create a digest.
The key to use for a response. This role will return the canonical URI of the request as a string, which is a reasonable default.
Kjetil Kjernsmo <email@example.com>.
This software is copyright (c) 2015, 2016 by Kjetil Kjernsmo.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.