Nginx ngx_pagespeed-Gzip静态资产

Nginx ngx_pagespeed-Gzip静态资产,nginx,mod-pagespeed,Nginx,Mod Pagespeed,我正在努力为我的nginx盒找到最佳的方法。当然,我的目标是为我的用户提供尽可能好的性能和最佳的加载时间 因此,我对我的nginx进行了负载测试,在nginx论坛的maxim dounin的帮助下,我发现我的吞吐量问题在于动态压缩静态资产 我必须在构建过程中预先准备gzip,这非常简单——并且只在comp level@1或2的情况下对动态内容执行动态gzip,这将节省一些cpu,并允许我使用aws m1.small ec2实例为尽可能多的用户服务 但我也打算使用ngx_pagespeed来优化这

我正在努力为我的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 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有自己的Gzip吗?它是动态运行还是缓存gzip版本

当它从nginx(gzip\u static on)接收到一个已经gzip的资产时,它是如何工作的?它是否必须在优化后解压并再次gzip

我怎样才能做到两全其美——服务预压缩静态资产和ngx_pagespeed优化


非常感谢并致以最诚挚的问候。

我能够通过在Nginx前面涂清漆来实现我的目标。Varnish缓存gzip版本的资产和页面。ngx_pagespeed下游缓存清除(查看nxg_pagespeed文档了解更多信息)在优化(我猜是在后台运行)完成后,通过向varnish发送清除请求,正在按预期工作。现在性能非常好。

我通过在Nginx前面涂清漆来实现我的目标。Varnish缓存gzip版本的资产和页面。ngx_pagespeed下游缓存清除(查看nxg_pagespeed文档了解更多信息)在优化(我猜是在后台运行)完成后,通过向varnish发送清除请求,正在按预期工作。现在性能非常好。

为什么要使用gzip\u static?如果是因为Gzip的CPU成本太高,那么ngx_pagespeed对于您的设置来说肯定太贵了。ngx_pagespeed比gzip增加了相当多的CPU使用。感谢您的帮助。CPU是一个限制,是的,但是ec2机器的网络吞吐量也是30.000 KB/s,所以我需要平衡一下。我使用gzip_static是为了在不浪费cpu的情况下获得最佳压缩级别。我知道pagespeed增加了很多cpu使用率,但我真的很想优化、组合、缩小我的资产,而且我无法控制源代码。我的问题是-ngx_pagespeed正在将我的静态优化资产缓存到tmpfs。每次用户点击优化资产时,ngx_pagespeed gzips它?或者它在缓存中保留一个gzip资产?根据我的测试,它应该更快。例如,当用户点击像[/css/a.print.css.pagespeed.cf.54Itr6v-Y8.css]这样的资产时,它直接从tmpfs缓存和服务器中获取。但与提供静态内容的nginx相比,吞吐量并不是那么好。自从我做了一些测试和阅读之后,我的问题有了一些改变。当[/css/A.print.css.pagespeed.cf.54Itr6v-Y8.css]被命中并且资产在缓存中时,ngx_pagespeed会做什么?它直接供应吗?它是不是可以吃和服务?它是否保留gzip版本?我可以控制吗?我们不缓存gzip版本(尽管我们已经讨论过这个)。相反,未压缩的资源存储在缓存中,并在运行中进行gzip。仅供参考,以及将来阅读本文的任何人,我能够通过在Nginx前面添加Varnish来实现我的目标。Varnish缓存gzip版本的资产和页面。ngx_pagespeed DownstreamCachePurge在优化(我猜是在后台运行)完成时,通过向varnish发送清除请求,它正在按预期工作。现在的表演很棒。致以最良好的祝愿。你为什么使用gzip_静态?如果是因为Gzip的CPU成本太高,那么ngx_pagespeed对于您的设置来说肯定太贵了。ngx_pagespeed比gzip增加了相当多的CPU使用。感谢您的帮助。CPU是一个限制,是的,但是ec2机器的网络吞吐量也是30.000 KB/s,所以我需要平衡一下。我使用gzip_static是为了在不浪费cpu的情况下获得最佳压缩级别。我知道pagespeed增加了很多cpu使用率,但我真的很想优化、组合、缩小我的资产,而且我无法控制源代码。我的问题是-ngx_pagespeed正在将我的静态优化资产缓存到tmpfs。每次用户点击优化资产时,ngx_pagespeed gzips它?或者它在缓存中保留一个gzip资产?根据我的测试,它应该更快。例如,当用户点击像[/css/a.print.css.pagespeed.cf.54Itr6v-Y8.css]这样的资产时,它直接从tmpfs缓存和服务器中获取。但与提供静态内容的nginx相比,吞吐量并不是那么好。自从我做了一些测试和阅读之后,我的问题有了一些改变。当[/css/A.print.css.pagespeed.cf.54Itr6v-Y8.css]被命中并且资产在缓存中时,ngx_pagespeed会做什么?它直接供应吗?它是不是可以吃和服务?它是否保留gzip版本?我可以控制吗?我们不缓存gzip版本(尽管我们已经讨论过这个)。相反,未压缩的资源存储在缓存中,并在运行中进行gzip。仅供参考,以及将来阅读此内容的任何人,我可以通过放置Varn来实现我的目标