Open ufgeorge opened 4 years ago
Maybe pagespeed cache size is too small and the assets got evicted? See your eviction numbers in stats page...
@Lofesa I only see file_cache_evicons and value is 0.
But I am using memcache. not file cache.
Cache eviction should not cause a 404 unless something else is wrong.
Cache expirations also happen.
Is it possible that the origin asset moved?
@jmarantz You can see source from https://course.soundshine.com.tw/?m=Homepage&c=Index&a=index&PageSpeedFilters=+debug
The rewrite url is https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png And original img url https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png is accessable.
That does not look like the result of MapProxyDomain. Can you share your other domain-related config?
Or maybe the image takes too much time to load. The https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png for me takes 25.69s to load
That does not look like the result of MapProxyDomain. Can you share your other domain-related config?
I have several vhost use the same nginx.
pagespeed Domain https://fonts.googleapis.com;
pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com;
pagespeed LoadFromFile "https://$host/" "$document_root/"; pagespeed LoadFromFileRuleMatch disallow .; pagespeed LoadFromFileRuleMatch allow .(ico|pdf|swf|eot|woff|woff2|ttf|otf|css|js|jpeg|jpg|png|gif|svg|svgz|mpg|mpeg|mp3|m4a|m4v|mp4|ogg|wmv|mov|mng|3gpp|3gp|webp|webm|flv|avi|asx|asf)(\?.)?$ps_dollar;
Or maybe the image takes too much time to load. The https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png for me takes 25.69s to load
Not very sure why? If timeout for loading img for rewrite, the img url should not rewrite. I see 404 which means img url rewrite succesful. It means img load and rewrite ok and save into cache?
RE "long time to load": that should not cause 404; it should cause PageSpeed to elect not to optimize that resource.
RE "pagespeed Domain https://fonts.googleapis.com;
" that is definitely wrong. You can only apply pagespeed Domain
to domains that run PageSpeed, and fonts.googleapis.com
does not. The existence of that directive in your config file can cause broken pages.
Based on the URLs you gave earlier, I was expecting to see a RewriteDomain
rule that was similarly misconfigured. RewriteDomain
basically means the two domains reference the same context, and you want to map one to the other. It's quite different from MapProxyDomain
which is the only config mechanism provided to optimize assets on another domain.
Are there any other RewriteDomain
directives in your config?
The image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png gets a 200 status from alibabacloud. Maybe the rewrited image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png is requested to alibabacloud and it don´t have it?
Are there any other
RewriteDomain
directives in your config?
There is no any RewriteDomain in my config. The whole pagespeed config as below
pagespeed on; pagespeed ProcessScriptVariables all; pagespeed FetchWithGzip off;
pagespeed RewriteLevel CoreFilters; pagespeed RespectVary off; pagespeed DisableRewriteOnNoTransform on; pagespeed NoTransformOptimizedImages on; pagespeed SupportNoScriptEnabled false; pagespeed ModifyCachingHeaders on; pagespeed ListOutstandingUrlsOnError on; pagespeed MaxCacheableContentLength -1; pagespeed DefaultSharedMemoryCacheKB 51200; pagespeed CreateSharedMemoryMetadataCache "/var/cache/ngx_pagespeed/" 51200; pagespeed FileCachePath "/var/cache/ngx_pagespeed/"; pagespeed FileCacheSizeKb 1024000; pagespeed FileCacheCleanIntervalMs 3600000; pagespeed FileCacheInodeLimit 500000; pagespeed LRUCacheKbPerProcess 8192; pagespeed LRUCacheByteLimit 16384; pagespeed HttpCacheCompressionLevel 9; pagespeed InlineResourcesWithoutExplicitAuthorization Script,Stylesheet; pagespeed LazyloadImagesAfterOnload off;
pagespeed RewriteDeadlinePerFlushMs 20; pagespeed CacheFragment eletang_st;
pagespeed MemcachedThreads 1; pagespeed MemcachedServers "x.x.x.x:11211";
pagespeed UsePerVhostStatistics off; pagespeed Statistics on; pagespeed StatisticsLogging on; pagespeed StatisticsLoggingIntervalMs 60000; pagespeed StatisticsLoggingMaxFileSizeKb 1024; pagespeed MessageBufferSize 100000; pagespeed LogDir /var/log/pagespeed; pagespeed StatisticsPath /ngx_pagespeed_statistics; pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics; pagespeed MessagesPath /ngx_pagespeed_message; pagespeed ConsolePath /pagespeed_console; pagespeed AdminPath /pagespeed_admin; pagespeed GlobalAdminPath /pagespeed_global_admin;
pagespeed EnableCachePurge on; pagespeed PurgeMethod PURGE; pagespeed DownstreamCacheRewrittenPercentageThreshold 95;
pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com; pagespeed MapProxyDomain https://$host/source_img/ https://source.eletang.com; pagespeed LoadFromFile "https://$host/" "$document_root/"; pagespeed LoadFromFileRuleMatch disallow .; pagespeed LoadFromFileRuleMatch allow .(ico|pdf|swf|eot|woff|woff2|ttf|otf|css|js|jpeg|jpg|png|gif|svg|svgz|mpg|mpeg|mp3|m4a|m4v|mp4|ogg|wmv|mov|mng|3gpp|3gp|webp|webm|flv|avi|asx|asf)(\?.)?$ps_dollar; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters dedup_inlined_images; pagespeed EnableFilters remove_comments; pagespeed EnableFilters move_css_to_head; pagespeed EnableFilters move_css_above_scripts; pagespeed EnableFilters prioritize_critical_css; pagespeed EnableFilters inline_google_font_css; pagespeed EnableFilters remove_quotes; pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters in_place_optimize_for_browser;
pagespeed EnableFilters insert_dns_prefetch; pagespeed EnableFilters hint_preload_subresources;
Do you have downstream caching enabled? E.g. a Varnish cache between pagespeed and your clients? If so, can you flush that cache and see if the problem persists?
Maybe there was a bad RewriteDomain or Domain directive in your config, which has since been removed, but a downstream cache is holding onto a broken html page?
On Thu, Aug 27, 2020 at 11:07 PM ufgeorge notifications@github.com wrote:
Are there any other RewriteDomain directives in your config?
There is no any RewriteDomain in my config. The whole pagespeed config as below
`## PageSpeed configurations pagespeed on; pagespeed ProcessScriptVariables all; pagespeed FetchWithGzip off;
pagespeed XHeaderValue "Powered By google_pagespeed";
PageSpeed filter settings
pagespeed RewriteLevel CoreFilters; pagespeed RespectVary off; pagespeed DisableRewriteOnNoTransform on; pagespeed NoTransformOptimizedImages on; pagespeed SupportNoScriptEnabled false; pagespeed ModifyCachingHeaders on; pagespeed ListOutstandingUrlsOnError on; pagespeed MaxCacheableContentLength -1; pagespeed DefaultSharedMemoryCacheKB 51200; pagespeed CreateSharedMemoryMetadataCache "/var/cache/ngx_pagespeed/" 51200; pagespeed FileCachePath "/var/cache/ngx_pagespeed/"; pagespeed FileCacheSizeKb 1024000; pagespeed FileCacheCleanIntervalMs 3600000; pagespeed FileCacheInodeLimit 500000; pagespeed LRUCacheKbPerProcess 8192; pagespeed LRUCacheByteLimit 16384; pagespeed HttpCacheCompressionLevel 9; pagespeed InlineResourcesWithoutExplicitAuthorization Script,Stylesheet; pagespeed LazyloadImagesAfterOnload off;
pagespeed LoadFromFileCacheTtlMs 604800000;
pagespeed RewriteDeadlinePerFlushMs 20; pagespeed CacheFragment eletang_st;
pagespeed JsInlineMaxBytes 10480;
Speed up PageSpeed by storing it in the super duper fast memcached
pagespeed MemcachedThreads 1; pagespeed MemcachedServers "x.x.x.x:11211"; PageSpeed admin pages configuration
pagespeed UsePerVhostStatistics off; pagespeed Statistics on; pagespeed StatisticsLogging on; pagespeed StatisticsLoggingIntervalMs 60000; pagespeed StatisticsLoggingMaxFileSizeKb 1024; pagespeed MessageBufferSize 100000; pagespeed LogDir /var/log/pagespeed; pagespeed StatisticsPath /ngx_pagespeed_statistics; pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics; pagespeed MessagesPath /ngx_pagespeed_message; pagespeed ConsolePath /pagespeed_console; pagespeed AdminPath /pagespeed_admin; pagespeed GlobalAdminPath /pagespeed_global_admin; PageSpeed Cache Purge
pagespeed EnableCachePurge on; pagespeed PurgeMethod PURGE; pagespeed DownstreamCacheRewrittenPercentageThreshold 95;
pagespeed Domain https://fonts.googleapis.com;
pagespeed MapProxyDomain https://$host/doctrans-tw/
https://doctrans-tw.eletang.com.tw; pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com; pagespeed MapProxyDomain https://$host/source_img/ https://source.eletang.com;
pagespeed LoadFromFile "https://$host/" "$document_root/"; pagespeed LoadFromFileRuleMatch disallow . ; pagespeed LoadFromFileRuleMatch allow .(ico|pdf|swf|eot|woff|woff2|ttf|otf|css|js|jpeg|jpg|png|gif|svg|svgz|mpg|mpeg|mp3|m4a|m4v|mp4|ogg|wmv|mov|mng|3gpp|3gp|webp|webm|flv|avi|asx|asf)(?. )?$ps_dollar;
pagespeed EnableFilters lazyload_images; pagespeed EnableFilters dedup_inlined_images;
pagespeed EnableFilters remove_comments; pagespeed EnableFilters move_css_to_head; pagespeed EnableFilters move_css_above_scripts; pagespeed EnableFilters prioritize_critical_css; pagespeed EnableFilters inline_google_font_css;
pagespeed EnableFilters remove_quotes;
pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters in_place_optimize_for_browser;
pagespeed EnableFilters elide_attributes;
pagespeed EnableFilters insert_dns_prefetch; pagespeed EnableFilters hint_preload_subresources;
CoreFilters default
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters rewrite_javascript;`
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/apache/incubator-pagespeed-ngx/issues/1709#issuecomment-682299409, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAO2IPLBWE453VQHDXBRLL3SC4NOBANCNFSM4QKFZZEQ .
Do you have downstream caching enabled? E.g. a Varnish cache between pagespeed and your clients? If so, can you flush that cache and see if the problem persists? Maybe there was a bad RewriteDomain or Domain directive in your config, which has since been removed, but a downstream cache is holding onto a broken html page?.
No, there is no any cache between client and server hosted this image.
The image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png gets a 200 status from alibabacloud. Maybe the rewrited image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png is requested to alibabacloud and it don´t have it?
The original img url https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png is ali cloud storage url. So rewrite url https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png still from ali cloud seems no issue.
But 404 url is https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png . It looks pagespeed rewrite not only url but also the img itself. Of course ali cloud will not have this img. I assume this rewrited img should be in pagespeed cache but not. So cause 404.
Sorry about my confusion -- I think your config looks OK mostly, and there's a possibility of a bug, because the example page for MapProxyDomain is broken also.
The only other suspicion I have is there are a few directives you are using that look suspicious:
pagespeed ModifyCachingHeaders on;
pagespeed RespectVary off;
Setting those things means that a proxy-cache at a users ISP or your CDN can capture PageSpeed's rewritten URL and serve it even if stale, or with user-agent-specific optimizations in it that might not be appropriate for all browsers (e.g. webp transcode).
Could you try removing those configs? In general PageSpeed should work well with minimal configuration and advanced options are available if needed, but you should make sure you understand why you are overriding defaults.
Just fixed the online example, that was a config error on the server side.
one other thought: maybe ngx_pagespeed is not activated on https://$host/source_img/
and you should map your externally hosted assets onto https://$host/some_directory_with_pagespeed_enabled/source_img
?
I configure pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com;
I see the html source and the url did change to what I want and image can be accessed by changed url. After a few days, there are 404 in nginx log of these changed url.
How did this happen? And how to troubleshoot it? TKX very much.
George