По идее, все должно было заработать, но тем не менее, проверка по PageSpeed опять показала, что кэширования на стороне клиента нет. Проверка заголовков по FireBug показала, что Expires все равно не работает и заголовки кэширования не отдаются.
Я начал искать причину и подозрение пало на наш сервер, а точнее на связку Apache + Nginx.
Это весьма распространенное решение, на большинстве хостингов все работает именно так.
И у меня возникло подозрение, что кэширующие заголовки режет Nginx, ведь выдает из Apache, который с клиентом общается не напрямую.
Дальнейшая проверка подтвердила мою догадку. Когда я отключил Nginx и пустил Апач напрямую, кэширование на стороне клиента сразу заработало.
Сразу возникла дилемма: а на кой тогда нужен Nginx, если он разгружает Апач, но замедляет работу сервера с клиентами, не давая нам управлять кэшированием?
Полез в Гугл на раскопки чужой мудрости, нашел некоторые варианты конфигов для Nginx, которые обеспечивают заголовки кэширования, но это все не то, нам надо, чтоб работал именно Expires у Апача, он очень хорошо делает свою работу и легко управляется через .htaccess