l at lrowe.co.uk
Fri Jul 22 15:06:59 CEST 2011
On 22 July 2011 07:46, Jacek <jacolmode at wp.pl> wrote:
> I would be very grateful for any suggestions.
> Dnia 29-06-2011 o godz. 18:37 Jacek Placek napisał(a):
>> I'm planning on using Varnish in my project as a reverse proxy cache.
>> Mainly to cache dynamically created streaming content at the backend
>> side. The process is CPU intensive and takes a fair amount of time to
>> I would like to ask you all which of the following requirements can be
>> accomplished by using the build-in functions, writing a dedicated module
>> (version 3.0) or changing the default functionality by patching the
>> 1) rate-limiting - a memcached set of counters, ex. ip address/time,
>> uri/time, ...
>> 2) streaming - content generated via a backend should be streamed ASAP
>> to the client and saved to cache at the same time - ideally while the
>> content is generated it would be very good to have the ability to stream
>> to more then one client (non blocking object)
Except when using pipe mode (which means no caching or any further
manipulation by Varnish), response objects are buffered into Varnish
before being returned to the browser. This makes Varnish unsuitable
for caching large numbers of videos / ISOs etc as whenever you hit an
uncached object the entire large file will be read into Varnish before
being returned to the user (even if all you want to do is manipulate
some response headers.)
>> 3) request manipulation - incoming request from a client is a HTTP GET
>> (domain/object_id) and should be transformed into HTTP POST to a backend
>> app extended with additional set of parameters (headers) taken from db
>> (memcache, mongodb, tokyo tyrant, mysql)
Varnish does not support changing the body of a request.
>> 4) cache expire - based on popularity and size of an object - free space
>> should be reclaimed by purging least popular objects (amount of traffic
>> they generate)
Yes, you can place a limit on the size of the Varnish cache and space
is reclaimed along those lines.
So I don't think Varnish will work for your use case.
More information about the varnish-misc