What are some good modules or systems that for caching that I can use for decreasing my load on Apache on an EC2 server running PHP, and why would you choose them?
Here are some popular, industry standard techniques to increase your speed. You can try them out depending on your exact configuration:
Memcached is a general-purpose distributed memory caching system that is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read.
Varnish is an HTTP accelerator designed for content-heavy dynamic web sites. In contrast to other HTTP accelerators, such as Squid, which began life as a client-side cache, or Apache, which is primarily an origin server, Varnish was designed from the ground up as an HTTP accelerator.
HBase is an open source, non-relational, distributed database modeled after Google's BigTable and is written in Java. It is developed as part of Apache Software Foundation's Hadoop project and runs on top of HDFS (Hadoop Distributed Filesystem), providing BigTable-like capabilities for Hadoop. That is, it provides a fault-tolerant way of storing large quantities of sparse data.
Cheat on Slow-Start
Slow-start is part of the congestion control strategy used by TCP, the data transmission protocol used by many Internet applications. Slow-start is used in conjunction with other algorithms to avoid sending more data than the network is capable of transmitting, that is, to avoid causing network congestion.
cwd's answer is excellent, just add a PHP opcode cacher (APC, eaccelerator, xcache) if the processing is PHP-heavy.
+1 to cwd for the
If your goal is to reduce the load on Apache, and assuming Apache is the front-line daemon receiving HTTP requests (i.e. there's no cache between the user and Apache) you should be giving a lot of attention to client-side optimization, specifically reducing page weight and reducing the number of requests needed to load a page.