Включение кэширования страниц rails приводит к исчезновению кодировки заголовка http

Мне нужно, чтобы charset был utf-8, который, по-видимому, имеет место по умолчанию. Недавно я включил кэширование страниц для нескольких статических страниц:

caches_page :about

Кэширование работает нормально, и я вижу соответствующие страницы about.html и contact.html, сгенерированные в моей / публичной папке, кроме случаев, когда страница отображается, ее больше нет в utf-8.

Немного погуглив, я попытался просмотреть заголовки http с помощью wget, до и после кэширования:

первый раз:

$wget --server-response http://localhost:3000/about

HTTP request sent, awaiting response... 
 1 HTTP/1.1 200 OK
 2 X-Ua-Compatible: IE=Edge
 3 Etag: "f7b0b4dea015140f3b5ad90c3a392bef"
 4 Connection: Keep-Alive
 5 Content-Type: text/html; charset=utf-8
 6 Date: Sun, 12 Jun 2011 03:44:22 GMT
 7 Server: WEBrick/1.3.1 (Ruby/1.8.7/2009-06-12)
 8 X-Runtime: 0.235347
 9 Content-Length: 5520
10 Cache-Control: max-age=0, private, must-revalidate

кэшировать:

$wget --server-response http://localhost:3000/about

Resolving localhost... 127.0.0.1
Connecting to localhost[127.0.0.1]:3000... connected.
HTTP request sent, awaiting response... 
 1 HTTP/1.1 200 OK
 2 Last-Modified: Sun, 12 Jun 2011 03:34:42 GMT
 3 Connection: Keep-Alive
 4 Content-Type: text/html
 5 Date: Sun, 12 Jun 2011 03:39:53 GMT
 6 Server: WEBrick/1.3.1 (Ruby/1.8.7/2009-06-12)
 7 Content-Length: 5783

в результате страница отображается в ISO-8859-1, и я получаю кучу искаженного текста. Кто-нибудь знает, как я могу предотвратить этот нежелательный результат? Спасибо.

1 ответ

Решение

Решение будет зависеть от используемого сервера.

Когда вы используете кеш страниц, серверы читает сервер напрямую, поэтому стек рельсов не предоставляет информацию о кодировке серверу. Тогда сервер по умолчанию применяется.

Если вы используете apache для пассажиров, добавьте в конфигурацию:

AddDefaultCharset UTF-8

Если вам нужны конкретные кодировки, используйте решение, подобное приведенному в http://www.philsergi.com/2007/06/rails-page-caching-and-mime-types.html

<LocationMatch \/(rss)\/?>
    ForceType text/xml;charset=utf-8
</LocationMatch>
<LocationMatch \/(ical)\/?>
    ForceType text/calendar;charset=utf-8
</LocationMatch>
Другие вопросы по тегам