2015-09-26 118 views
0

我有https://www.something.com 部分網站的網站是一個子https://subdomain.something.comCSS加載圖像

標識,如網站圖片僅是整個網站一旦加載,因此在子域的圖像是從https://www.something.com加載,如果用戶已經訪問了主站點,圖像不需要再次加載,這可能嗎?

我想這是唯一可以使用的路徑,如果有人對此有任何進一步的想法,將不勝感激?

在此先感謝!

background:url("https://www.something.com/images/my-image.png"); 
+0

根據你的子域的配置方式,你可以做一些像'background:url(「/ images/my-image.png」);'你可以通過試圖訪問你的圖像來測試它是否工作'https:// www.something.com/images/my-image.png'和'https:// subdomain.something.com/images/my-image.png'。 – ACIDSTEALTH

+0

感謝您的回覆,'background:url(「/ images/my-image.png」);'在子域上使用會在子域中找到圖像,但是像它一樣在主域中查找圖像。 –

+0

在這種情況下,您可能必須使用完整的url,以便瀏覽器知道圖像與已經緩存的圖像相同。有沒有理由不使用完整的網址? – ACIDSTEALTH

回答

0

緩存

一個緩存的圖片被發現是這麼來的位置。假設用戶通過foo.com下載圖像,圖像的來源位置爲foo.com/image1.jpg,然後他去subdomain.foo.com顯示相同的圖像。現在,如果圖像來自相同的位置(foo.com/image1.jpg),您的瀏覽器將會注意到並從緩存中獲取該文件。如果它是相同的圖像,但來自不同的源位置,則瀏覽器將無法從緩存中獲取它,而是會下載它。

爲了能在瀏覽器中的圖像(,CSS和JavaScript)緩存你可以把下面的.htaccess文件中的代碼(阿帕奇只)

ExpiresActive On 
ExpiresDefault "access plus 10 seconds" 
ExpiresByType text/html "access plus 10 seconds" 
ExpiresByType image/x-icon "access plus 1000000 seconds" 
ExpiresByType image/gif "access plus 1000000 seconds" 
ExpiresByType image/jpeg "access plus 1000000 seconds" 
ExpiresByType image/png "access plus 1000000 seconds" 
ExpiresByType text/css "access plus 1000000 seconds" 
ExpiresByType text/javascript "access plus 1000000 seconds" 
ExpiresByType application/x-javascript "access plus 1000000 seconds" 

1000000 seconds是緩存的到期日期文件。

如果你能夠使用CDN,我會建議,因爲CDN會自動緩存靜態內容,所以你不必擔心這一點。你可以把你的CDN放在你的子域上,或者你可以直接鏈接到它,但是你可能會遇到一些跨域錯誤。

路徑

在你的情況,你需要使用的完整路徑。因爲像../images/foo.jpg這樣的東西會將圖像定位在同一個域上。如果出於某種原因,您不想爲每個可以使用PHP的元素輸入完整的url。

<?php 
    $domain = "http://www.foo.com"; 
?> 

<style> 
    div{ 
     background:url("<?php echo $domain; ?>/images/my-image.png"); 
    } 
</style> 

注意:這段代碼應該放在head標籤中。