Подтвердить что ты не робот

Как автоматизировать миниатюра Javascript и CSS в Google App Engine?

Я не нашел подходящего решения для автоматизации Google App Engine CSS и Javascript.

4b9b3361

Ответ 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. Вы не должны его динамически минимизировать, если вы не генерируете его динамически.

Ответ 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, - затем установите для контроля кеша публично, чтобы кэшировать результаты вверх по течению.

Ответ 6

Вы можете попробовать время сборки или время выполнения (используя плагин maven), предоставленный инструментом wro4j

Отказ от ответственности: это проект, над которым я работаю.