включение кеширования страниц rails приводит к исчезновению кодировки заголовка http - PullRequest
3 голосов
/ 12 июня 2011

Мне нужно, чтобы 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

cached:

$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 Ответ

2 голосов
/ 22 июня 2011

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

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

Если вы используете 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>
...