Nginx, кэширование статических файлов

В продолжение предыдущего поста.

Чтобы ускорить работу сайта потребовалось кэшировать статические файлы (по большей части для javascript и для CSS).

Находим секцию

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|txt|xml)$ {
...
}

и добавляем директиву expires:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|txt|xml)$ {
...
expires 7d;
}

Проверяем в FireBug-е во вкладке NET: обновляем страницу 2 раза и смотрим код ответа.
Если “200 ОК” – значит не работает.
Если “304 Not Modified” – добились чего хотели.

Ссылки по теме:

Nginx, медленная отдача статики

В процессе работы возникла у меня неприятная ситуация: не хотел sitemap.xml нормально загружаться.
По началу думал что ошибка в самом файле. Но он даже wget-ом не хотел сливаться. wget Получал 16 килобайт, подвисал, рвал соединение, открывал новое, получал 16 килобайт, …

Решил проверить на других файлах. Архив tar.gz я скачал со свистом, а с обычным текстовым файлом была таже история что и с сайтмапом.

В результате недолгого гугления полез в настройки nginx-а, нашел строчку, которая отвечала за статические файлы:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$

и просто добавил в конце еще txt и xml:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|txt|xml)$

Перегрузил nginx и всё заработало как нужно.

Ссылки по теме: