Если я использовал сжатые файлы JavaScript, я получаю недопустимые ошибки символов / токенов как в Chrome, так и в Firefox - PullRequest
9 голосов
/ 29 февраля 2012

Я использую встроенный сервер на моем MacBook.

Скажем, мой скрипт - foo.js.Это работает в обоих моих тестовых браузерах (Firefox 10, Chrome 17):

<script type="text/javascript" src="foo.js"></script>

Однако, если я скопирую файл, оба браузера выдают мне недопустимую ошибку токена / символа после того, как я изменю приведенную выше строку наэто:

<script type="text/javascript" src="foo.js.gz"></script>

Что дает?Нужно ли менять тип или что-то еще?Где документирована такая практика?Всякий раз, когда я вижу в Интернете упоминание о «архивировании ваших скриптов!», Никто не удосуживается упомянуть, что вам нужно сделать что-то особенное со ссылками.

Ответы [ 3 ]

9 голосов
/ 29 февраля 2012

Веб-сервер должен сообщить браузеру, что контент распакован. Это делается с помощью заголовка content-encoding . Возможно, вы можете настроить свой веб-сервер так, чтобы он передавал в этот заголовок файлы, заканчивающиеся на .gz.

Вместо того, чтобы сжимать файлы статически, для веб-сервера также свойственна функция сжатия документов на лету. Это означает, что вы помещаете обычный файл foo.js в корень документа и настраиваете веб-сервер для его сжатия при отправке клиенту.

4 голосов
/ 14 октября 2016

У меня была похожая ошибка.Проверьте на вкладке сети, соответствующей вашему foo.js.В заголовке ответа запрошенный заголовок должен иметь Content-Encoding: gzip и Content-Type: application / javascript .В противном случае браузер не распакует ваш файл.Браузер должен знать, какая кодировка содержимого выполняется над файлом.

2 голосов
/ 20 июля 2014

Эта ошибка также может возникнуть, если ваша настройка gzip слишком высока. Я пробовал gzip -9 и даже при отправке правильного Content-Encoding я получил эту ошибку. Когда я просто запускаю обычный gzip через gzip file.js, он работает правильно.

...