缓存
一个缓存的图片被发现是这么来的位置。假设用户通过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