緩存
一個緩存的圖片被發現是這麼來的位置。假設用戶通過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標籤中。
根據你的子域的配置方式,你可以做一些像'background:url(「/ images/my-image.png」);'你可以通過試圖訪問你的圖像來測試它是否工作'https:// www.something.com/images/my-image.png'和'https:// subdomain.something.com/images/my-image.png'。 – ACIDSTEALTH
感謝您的回覆,'background:url(「/ images/my-image.png」);'在子域上使用會在子域中找到圖像,但是像它一樣在主域中查找圖像。 –
在這種情況下,您可能必須使用完整的url,以便瀏覽器知道圖像與已經緩存的圖像相同。有沒有理由不使用完整的網址? – ACIDSTEALTH