2015-09-26 113 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标签中。