Google AMP 图片请求是 404'ing
Google AMP image requests are 404'ing
我的 AMP 网页正在通过验证,但有些图片是 404'ing。从我的站点访问页面时,图像加载正确。但是,当从 Google 的 AMP CDN 加载页面时(我相信它们缓存了所有页面)某些图像 return 404s。
在网络选项卡中,我注意到图像 GET 请求在我的网站上是正确的(内容类型:image/png)。另一方面,Google 的缓存页面为未加载的图像发出内容类型为 "text/html" 的 GET 请求。 GET 响应是一个基本的 HTML 页面,指示 404。
应该注意的是,有几张图片加载成功。它们存储在图像文件夹中,并远程存储在解析服务器上。两个图像位置都成功提供了图片,只是不是一直如此;而且我似乎找不到任何可能导致某些人响应 200,其他人响应 404 的不一致。
我将不胜感激解决这一问题的任何提示!
edit: 有没有可能 Google 还没有缓存图片?页面本身肯定被缓存了。
加载您的示例 link 时,我收到 https://cdn.ampproject.org/ii/w1000/s/chargehub.com/images/city_images/633_Image.png 的 404。当我从你的服务器请求相应的原始图像时,我看到 Cache-Control: no cache
header:
% HEAD https://chargehub.com/images/city_images/633_Image.png | grep Cache-Control
Cache-Control: no-cache
虽然我没有任何猜测为什么也使用 Cache-Control: no cache
提供的其他图像,如 https://chargehub.com/logos/ChargeHub-Logo.png、do 被缓存,但我会尝试指示您的网络服务器不要设置此 header 以查看是否有帮助。
问题是您使用的是图像的相对路径而不是绝对路径。所以下面的<amp-img>
标签,
<amp-img ... src="/images/city_images/633_Image.png">
需要
<amp-img ... src="https://chargehub.com/images/city_images/633_Image.png">
这应该可以解决您的问题。
问题定位!这些图像最初是从 Google 的图像 API 中提取的。 API 允许我指定文件格式(我想要 .png 的)。不幸的是,如果图像 Google 是 JPEG,他们只是添加一个 .png 扩展名并返回给我。
基本上,如果 AMP-IMG 期望 example.png,它仅在 example.png 是真正的 png 编码时有效(您可以通过在文本编辑器中打开文件来判断编码,PNG 将在顶部附近有一个 "png"。
在我的例子中,example.png 实际上是 example.jpg 重命名为 example.png(仍然是 jpeg 编码)。 Google 的缓存服务不喜欢这样,返回了 404。
我只是将所有照片重命名为 .jpg 扩展名,然后使用 Photoshop 将它们批量转换为真正的 .png。希望这对其他人有帮助!
我的 AMP 网页正在通过验证,但有些图片是 404'ing。从我的站点访问页面时,图像加载正确。但是,当从 Google 的 AMP CDN 加载页面时(我相信它们缓存了所有页面)某些图像 return 404s。
在网络选项卡中,我注意到图像 GET 请求在我的网站上是正确的(内容类型:image/png)。另一方面,Google 的缓存页面为未加载的图像发出内容类型为 "text/html" 的 GET 请求。 GET 响应是一个基本的 HTML 页面,指示 404。
应该注意的是,有几张图片加载成功。它们存储在图像文件夹中,并远程存储在解析服务器上。两个图像位置都成功提供了图片,只是不是一直如此;而且我似乎找不到任何可能导致某些人响应 200,其他人响应 404 的不一致。
我将不胜感激解决这一问题的任何提示!
edit: 有没有可能 Google 还没有缓存图片?页面本身肯定被缓存了。
加载您的示例 link 时,我收到 https://cdn.ampproject.org/ii/w1000/s/chargehub.com/images/city_images/633_Image.png 的 404。当我从你的服务器请求相应的原始图像时,我看到 Cache-Control: no cache
header:
% HEAD https://chargehub.com/images/city_images/633_Image.png | grep Cache-Control
Cache-Control: no-cache
虽然我没有任何猜测为什么也使用 Cache-Control: no cache
提供的其他图像,如 https://chargehub.com/logos/ChargeHub-Logo.png、do 被缓存,但我会尝试指示您的网络服务器不要设置此 header 以查看是否有帮助。
问题是您使用的是图像的相对路径而不是绝对路径。所以下面的<amp-img>
标签,
<amp-img ... src="/images/city_images/633_Image.png">
需要
<amp-img ... src="https://chargehub.com/images/city_images/633_Image.png">
这应该可以解决您的问题。
问题定位!这些图像最初是从 Google 的图像 API 中提取的。 API 允许我指定文件格式(我想要 .png 的)。不幸的是,如果图像 Google 是 JPEG,他们只是添加一个 .png 扩展名并返回给我。
基本上,如果 AMP-IMG 期望 example.png,它仅在 example.png 是真正的 png 编码时有效(您可以通过在文本编辑器中打开文件来判断编码,PNG 将在顶部附近有一个 "png"。
在我的例子中,example.png 实际上是 example.jpg 重命名为 example.png(仍然是 jpeg 编码)。 Google 的缓存服务不喜欢这样,返回了 404。
我只是将所有照片重命名为 .jpg 扩展名,然后使用 Photoshop 将它们批量转换为真正的 .png。希望这对其他人有帮助!