1

我正在尝试为我的 nginx 盒子找到最佳方法。当然,我的目标是为我的用户提供最佳性能和最佳加载时间。

因此,我正在对我的 nginx 进行负载测试,并且 - 在 nginx 论坛的 maxim-dounin 的帮助下 - 发现我的吞吐量问题是动态压缩静态资产。

我必须在构建过程中预先对所有内容进行 gzip 压缩,这非常容易 - 并且只在 comp level @ 1 或 2 时对动态内容进行动态 gzip,这应该节省一些 cpu 并允许我为尽可能多的用户提供服务可以使用 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 自己做gzipping 吗?它是即时执行还是缓存 gzipped 版本?

当它从 nginx (gzip_static on) 接收到一个已经 gzip 压缩的资产时,它会怎么做?优化后是否必须解压缩然后再次gzip?

我怎样才能两全其美 - 提供预压缩的静态资产和 ngx_pagespeed 优化?

非常感谢和最好的问候。

4

1 回答 1

1

我能够通过将 Varnish 放在 Nginx 前面来实现我的目标。Varnish 缓存资产和页面的压缩版本。ngx_pagespeed 下游缓存清除(有关更多信息,请查看 nxg_pagespeed 文档)在优化(我猜是在后台运行)完成时通过发送 PURGE 请求到清漆来正常工作。现在的表现很棒。

于 2013-10-28T21:25:06.160 回答