Приложение Rails с Ext JS в качестве внешнего интерфейса и требует сжатия скриптов

У меня есть приложение rails, которое использует Ext JS для внешнего интерфейса. У меня нет проблем с запуском приложения. Но так как ext-all.js громоздкий, он загружается дольше. Я попытался создать собственный Ext JS, но это не сильно повлияло на размер сценария Ext JS.

Я пытался использовать кеш Rails, так как использую Rails 2.x. Для обычных файлов сценариев Java у него нет проблем с кэшированием, но для сценариев Ext JS он загружается, но я получаю некоторые ошибки объекта DOM, такие как: Ext is not defined. Я ищу сжатую версию скриптов Ext JS или какой-нибудь режим gzip. Я попытался погуглить и нашел различные варианты сжатия. Но я еще не взломал его.

Может ли кто-нибудь дать несколько советов о том, как решить проблему сжатия?


person Community    schedule 29.05.2009    source источник


Ответы (4)


Различные специфичные для Ext параметры для пользовательских сборок объясняются здесь:

http://extjs.com/learn/Tutorial:Building_Ext_From_Source

Для сжатия есть много вариантов. YUICompressor — один из лучших на данный момент. Не уверен, что вы подразумеваете под «режимом gzip». Gzip — это опция, которая должна быть включена на уровне веб-сервера и не имеет ничего общего с Ext или JavaScript.

person Brian Moeskau    schedule 01.06.2009

Ext уже минимизирован в производственных файлах, поэтому дальнейшая минимизация бесполезна, вы должны минимизировать только свои собственные скрипты.

Вы можете посмотреть на CacheFly, который может предоставить Ext вашим клиентам быстрее, учитывая его распределенный характер.

Единственный другой вариант — это сжатие на уровне HTTP-запроса с использованием mod_gzip в Apache или тому подобном.

person Lloyd    schedule 02.06.2009

Размер ExtJ ненамного больше (если вообще есть), чем у большинства современных веб-сайтов. Это что-то меньше 1 МБ вместе с вашими скриптами. И загружается только один раз. Я думаю, что при нынешних скоростях сети это почти не влияет на клиентов.

person Thevs    schedule 06.06.2009

На самом деле это конфигурация вашего веб-сервера. Вы должны использовать что-то вроде этого для Apache:

FileETag MTime
ExpiresActive On
ExpiresDefault "access plus 30 days"
AddOutputFilterByType DEFLATE text/html application/javascript text/javascript text/css

Он позаботится о том, чтобы эти активы были сжаты и, если не указано иное, кэшируются на 30 дней.

person Roman    schedule 07.11.2010