2016-11-25 47 views
2

我的AMP页面正在通过验证,但有些图片404'。从我的网站访问页面时,图像加载正确。但是,当从Google的AMP CDN(我相信他们缓存所有页面)加载页面时,某些图像会返回404s。Google AMP图片请求404'

在网络选项卡中,我注意到图片GET请求在我的网站(content-type:image/png)上时是正确的。另一方面,Google的缓存页面会为未加载的图像发出GET请求,其中包含内容类型“text/html”。 GET响应是指示404的基本HTML页面。

应该注意的是,几个图像的加载成功。它们既存储在图像文件夹中,也存储在分析服务器上。两个图像位置都成功提供图片,而不是所有的时间;我似乎无法找到任何不一致的地方,可能会导致一些人回应200,其他人404。

我非常感谢任何提示,以找出这一个!

编辑:Google可能没有缓存图像吗?该页面本身肯定被缓存。

+0

提供指向示例页面的链接会很有帮助。需要检查的是GoogleBot是否被允许访问所有图片或是否有人被阻止通过robots.txt。 –

+0

@SebastianBenz对不起,这里有一个示例链接: https://www.google.ca/amp/s/chargehub.com/amp/en/countries/united-states/hawaii/waipahu。html 请务必在移动设备或模拟移动设备上查看它,以防止重定向(Chrome中的Ctrl + Shift + i,点击左上角的移动图标并选择iPhone 6等手机) – fpscolin

回答

0

找到问题!这些图像最初是从Google的Image API中删除的。该API允许我指定一个文件格式(我想要.png的)。不幸的是,如果Google的图片是JPEG图片,他们只需添加一个.png扩展名并将其返回给我。

基本上,如果AMP-IMG需要example.png,它只有在example.png是真正的png编码(你可以通过在文本编辑器中打开文件来告诉编码,PNG将有一个“png”靠近顶部)。

在我的情况下,example.png实际上是example.jpg RENAMED to example.png(jpeg encoding still)。谷歌的缓存服务不喜欢这个,并且返回了一个404.

我只是将我的所有照片重命名为.jpg扩展名,然后使用Photoshop将它们批量转换为真.png。希望这有助于其他人被卡住!

1

加载您的示例链接时,我得到了404的https://cdn.ampproject.org/ii/w1000/s/chargehub.com/images/city_images/633_Image.png。当我从你的服务器请求相应的原始图像,我看到一个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担任为什么其他图像的任何猜测,像https://chargehub.com/logos/ChargeHub-Logo.png GET缓存,我会尝试指示您的Web服务器不设置此标头,看看是否有帮助。

+0

感谢您的帮助,不幸的是修改web.config中的缓存控制并没有解决它。 – fpscolin

3

问题是,您正在使用图像的相对路径而不是绝对路径。所以下面<amp-img>标签,

<amp-img ... src="/images/city_images/633_Image.png"> 

必须

<amp-img ... src="https://chargehub.com/images/city_images/633_Image.png"> 

这应该解决您的问题。

+0

尝试改变为绝对链接,没有运气。 – fpscolin

+0

我有类似的问题,它对我来说很好。谢谢。 – pidabrow

+0

@piotrdab - 没问题 – Andrew