我的AMP页面正在通过验证,但有些图片是404。从我的网站访问页面时,图像正确加载。但是,当从Google的AMP CDN加载页面时(我相信它们会缓存所有页面),某些图像会返回404。
在网络标签中,我注意到我的网站上的图片GET请求是正确的(content-type:image / png)。另一方面,Google的缓存页面使用内容类型" text / html"进行GET请求。对于不加载的图像。 GET响应是一个基本的HTML页面,表示404。
应该注意的是,有几个图像可以成功加载。它们既存储在图像文件夹中,又存储在解析服务器上。两个图像位置都成功提供了图片,而不是所有时间;而且我似乎无法找到任何可能导致某些人回复200的不一致,其他人则为404.
我非常感谢任何解决这个问题的提示!
编辑:Google可能还没有缓存图片吗?页面本身肯定是缓存的。
答案 0 :(得分:3)
问题在于您使用的是图像的相对路径而不是绝对路径。以下是<amp-img>
标记,
<amp-img ... src="/images/city_images/633_Image.png">
需要
<amp-img ... src="https://chargehub.com/images/city_images/633_Image.png">
这应该可以解决你的问题。
答案 1 :(得分:1)
加载示例链接时,我获得了https://cdn.ampproject.org/ii/w1000/s/chargehub.com/images/city_images/633_Image.png的404。当我从您的服务器请求相应的原始图像时,我看到Cache-Control: no cache
标题:
% HEAD https://chargehub.com/images/city_images/633_Image.png | grep Cache-Control
Cache-Control: no-cache
虽然我没有猜测为什么其他图片也会Cache-Control: no cache
,做的NOT IN
也会被缓存,但我会尝试指示您的Web服务器不设置此标头以查看是否有帮助。
答案 2 :(得分:0)
问题所在!这些图片最初是从Google的Image API中删除的。 API允许我指定文件格式(我想要.png&#39; s)。不幸的是,如果谷歌的图像是JPEG,他们只是添加了一个.png扩展名并将其返回给我。
基本上,如果AMP-IMG期待example.png,它只有在example.png真正被png编码时才有效(你可以通过在文本编辑器中打开文件来告诉编码,PNG会有一个&#34; png&#34;靠近顶部。)
就我而言,example.png实际上是example.jpg RENAMED to example.png(仍然是jpeg编码)。谷歌的缓存服务不是这样的,并且返回了404。
我只是将我的所有照片重命名为.jpg扩展名,然后使用Photoshop将它们批量转换为true .png。希望如果其他人被困住,这会有所帮助!