Memcache (d) vs. Varnish dla przyspieszenia 3-warstwowej architektury sieciowej

Próbuję przyspieszyć mój test porównawczy (trójwarstwowa architektura sieciowa) i mam kilka ogólnych pytań związanych z Memcache (d) i Varnish. Jaka jest różnica? Wydaje mi się, że Varnish znajduje się za serwerem WWW, cache'uje strony internetowe i nie wymaga zmian w kodzie, wystarczy...