2016-11-25 49 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