css从子域加载图像

时间:2015-09-26 14:20:24

标签: css image subdomain

我在https://www.something.com上有一个网站 该网站的一部分位于子域https://subdomain.something.com

我想网站图片只能在整个网站上加载一次,因此要从https://www.something.com加载子域图像,如果用户已经访问过主网站,则图片不需要再次加载,这可能吗?

我认为这是唯一可以使用的路径,如果有人对此有任何进一步的想法,我会很感激吗?

提前致谢!

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

1 个答案:

答案 0 :(得分:0)

<强>缓存

根据它来自的位置找到缓存的图片。我们假设用户通过foo.com下载图片,图片的来源位置为foo.com/image1.jpg,之后他会转到显示相同图片的subdomain.foo.com。现在,如果图像来自同一位置(foo.com/image1.jpg),您的浏览器会注意到该图像并从缓存中获取该文件。如果它是相同的图片,但来自不同的来源位置,则您的浏览器无法从缓存中获取,但会将其下载。

为了在浏览器缓存中包含图像(,css和javascript),您可以将以下代码放在.htaccess文件中(仅限apache。)

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之类的东西会将图像定位在同一个域中。如果由于某种原因,您不想为每个元素键入完整的URL,那么您可以使用PHP。

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

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

注意:这段代码应该放在head标签中。