I am quite interested in this question, and have not yet reached a
conclusion about which one is better for my application, but I have
these thoughts:
Squid is much more mature, for example with respect to:
- Support for inter-cache protocols
- Support for specific client and server idiosyncrasies
- Logging and diagnostics (at least in relation to reverse proxy caching)
The Apache code is, to me, quite a bit easier to read.
Squid has a few special-purpose extensibility hooks (like for
redirectors and authentication helpers), but Apache has more generic
APIs that offer better opportunities for modularity.
One suspects that Apache's MPMs may be able to better exploit modern
multiprocessor hardware under certain circumstances, but I'm not yet
sure of which circumstances.
Squid will not bring popular disk hits into memory after it has been
restarted. It will only cache in memory resources that it has retrieved
from across the network. I have not yet checked Apache on this score.
In tinkering with the source, I've found it much easier to bring down
Squid with a programmer error as compared with Apache.
Other details that I think I understand, but I'm not totally sure of:
- Apache must perform a seek to discover a disk-cache hit, whereas Squid
consults an in-memory index of disk resources.
- It looks like "Vary" support is partially broken in Apache, and that
it stores at most one variant.
- Apache doesn't do negative caching (of 404s, for example) like Squid.
I haven't found any direct comparisons of the two on the web.
-Ben
Mace.Scott@xxxxxxxxxxxxxxxxxxx wrote:
Are there any resources that compare using Squid as a reverse proxy versus
Apache? We currently use Apache as our reverse proxy, and do some url
rewriting, and cookie based conditional url rewriting. Is there an
advantage to using Squid instead? Disadvantages? Thanks!
=========================
Scott Mace
Security Administrator
Travelcenters of America
440-808-4318
mace.scott@xxxxxxxxxxxxxxxxxxx
=========================