Я не нашел подходящего решения для автоматизации Google App Engine CSS и Javascript.
Как автоматизировать миниатюра Javascript и CSS в Google App Engine?
Ответ 1
Если ваши файлы JS/CSS должны использоваться внутри HTML-страницы, то очень хороший вариант - автоматическое оптимизация вашего сайта App Engine (минификация, объединение, вставка и многое другое) с помощью экспериментальной функции "Скорость страницы". Вы можете включить это, выполнив следующие действия:
-
Перейдите на панель инструментов App Engine: https://appengine.google.com/settings?&app_id=s~your_project_id
-
Нажмите "Настройки приложения" (внизу слева в разделе "Администрирование" ).
-
Прокрутите страницу вниз до раздела "Производительность" и найдите "PageSpeed Service:". Установите флажок "Включить службу PageSpeed" и нажмите "Сохранить".
Это добавит фильтры ответов, которые автоматически сделают такие вещи, как объединение и минимизация вашей JS, превратите мини-пакет из ссылки script в встроенный script (чтобы уменьшить количество запросов сервера) и более прохладный и легкий улучшения производительности. Подробнее об этой функции читайте здесь: https://developers.google.com/speed/pagespeed/service/faq
Ответ 2
Запишите развертывание script, которое сделает копию вашего приложения с мини-JS и CSS, а затем вызывает appcfg. Вы не должны его динамически минимизировать, если вы не генерируете его динамически.
Ответ 3
В итоге я создал этот appengine script (использует memcache и slimit). Я нашел slimit лучшим миниатюром script, но я думаю об использовании этого из Google.
Ответ 4
Вы можете эффективно автоматизировать процесс, загрузив содержимое вашего script в строку, обработав его с помощью jsmin и, наконец, сохраните и обработайте результат. Не беспокойтесь о производительности, вы запускаете jsmin только при создании экземпляра приложения (определенность не для каждого запроса).
вы можете захватить jsmin.py здесь.
говорит, что у меня есть эта функция, которая читает JS из файловой системы (несжатая, отладочная версия) и возвращает ее строковое содержимое в модуле logger.py:
class ScriptManager():
def get_javascript(self):
path_to_js = os.path.join(os.path.dirname(__file__), 'js/script.js')
return file(path_to_js,'rb').read()
обработать его с помощью jsmin. убедитесь, что используете правильные заголовки кеширования. возьмите этот модуль jsrendered sample как пример
js_compressed =
jsmin.jsmin(scripts.logger.ScriptManager().get_javascript())
JS_CACHE_FOR_DAYS = 30
class scriptjs(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/javascript'
expires_date = datetime.datetime.utcnow() + datetime.timedelta(JS_CACHE_FOR_DAYS)
expires_str = expires_date.strftime('%d %b %Y %H:%M:%S GMT')
self.response.headers.add_header('Expires', expires_str)
self.response.headers['Cache-Control'] = 'public'
self.response.cache_control.no_cache = None
self.response.out.write(js_compressed)
теперь возвращает это из динамического обработчика контировки в main.py:
app = webapp2.WSGIApplication([
('/scripts/script.js', jsrender.scriptjs),...
Ответ 5
Ответ Nick - правильный способ сделать это, но вы можете сделать это "на лету", когда запрашивается JS/CSS, - затем установите для контроля кеша публично, чтобы кэшировать результаты вверх по течению.
- Slimmer - http://pypi.python.org/pypi/slimmer/
- JSmin.py - http://code.google.com/p/v8/source/browse/branches/bleeding_edge/tools/jsmin.py
- Отслеживание заголовка кэша - http://groups.google.com/group/google-appengine/browse_thread/thread/be3fa7b5e170f378 и сообщение в блоге - http://www.kyle-jensen.com/proxy-caching-on-google-appengine li >
Ответ 6
Вы можете попробовать время сборки или время выполнения (используя плагин maven), предоставленный инструментом wro4j
Отказ от ответственности: это проект, над которым я работаю.