The ways you can cache assets with HTTP has been already beaten to death by many other blog posts, but I want to highlight a very big gotcha that still bites many people. This is when you deploy a new version of your application, but some browsers still show the old CSS and JS files, even though the contents of those files have changed.
The Zend Optimizer+ has been integrated into PHP core with the 5.5 release, which, according to the RFC page, has many advantages over APC. It has been renamed OPcache, can be enabled with a simple ini setting, and since it's in the core, it offers better version compatibility. Unfortunately it also includes my only gripe with APC, invalidating the cache is much harder than what one would think.