Я пытаюсь найти лучший подход для моей коробки nginx. Моя цель — это, конечно же, максимально возможная производительность и лучшее время загрузки для моих пользователей.
Итак, я проводил нагрузочное тестирование своего nginx и — с помощью maxim-dounin с форумов nginx — обнаружил, что мои проблемы с пропускной способностью заключались в сжатии статических ресурсов на лету.
Мне придется предварительно заархивировать все в процессе сборки, это очень просто - и сделать gzip на лету для динамического контента только с уровнем компа @ 1 или 2, что сэкономит немного процессорного времени и позволит мне обслуживать столько пользователей, сколько возможно с экземпляром aws m1.small ec2.
Но я также намерен использовать ngx_pagespeed для оптимизации этих статических ресурсов, минимизации, объединения и т. д., которые так хорошо делает ngx_pagespeed. Я имею в виду, что с изображениями я могу работать и делать jpgoptim и pngoptim в процессе сборки, но совмещать css/js сложнее.
Я использую эту конфигурацию ngx_pagespeed:
pagespeed on;
pagespeed EnableFilters combine_css,combine_javascript,canonicalize_javascript_libraries,collapse_whitespace,convert_meta_tags,dedup_inlined_images,flatten_css_imports,inline_import_to_link,inline_css,inline_javascript,rewrite_javascript,remove_comments,rewrite_css,rewrite_images,convert_gif_to_png,recompress_png,convert_jpeg_to_progressive,strip_image_color_profile,strip_image_meta_data,insert_image_dimensions;
pagespeed JpegRecompressionQuality 80;
pagespeed FileCacheSizeKb 256000; #256mb
pagespeed FileCacheCleanIntervalMs 3600000;
pagespeed FileCacheInodeLimit 500000;
pagespeed FileCachePath /run/shm/nginx/pagespeed_cache;
pagespeed Statistics on;
pagespeed StatisticsLogging on;
pagespeed LogDir /var/log/pagespeed;
pagespeed LowercaseHtmlNames on;
Любые идеи о том, как ngx_pagespeed работает с nginx gzip_static? Я имею в виду, насколько я понимаю, ngx_pagespeed работает «перед» nginx, поскольку он кэширует все, что оптимизирует в tmpfs. Если сервер получил доступ к уже оптимизированному активу, он серверирует из tmpfs, и я искал gzip-файлы в папке кеша и не мог их найти. Во-первых, ngx_pagespeed выполняет сжатие? Он делает это на лету или кеширует сжатую версию?
Что происходит, когда он получает уже заархивированный ресурс от nginx (gzip_static включен)? Нужно ли распаковывать, а затем снова сжимать после оптимизации?
Как я могу получить лучшее из обоих миров — обслуживание предварительно сжатых статических ресурсов и оптимизация ngx_pagespeed?
Большое спасибо и с наилучшими пожеланиями.