为多个网站提供来自一个域的图像

时间:2011-05-05 11:57:08

标签: asp.net performance iis caching browser

我们公司内有近13个域名,我们希望从一个应用程序提供图像以利用缓存。

例如,我们将拥有c1.example.com,我们将把所有产品图片放在此应用程序中。但在这里我有些疑惑;

1-如何强制客户端浏览器缓存图像而不再请求它?

2-当我在我的应用程序中引用这些图像时,我将使用以下html标记;

<img scr="http://c1.example.com/core/img1.png" />

但是当我在https下运行网站时,这会导致问题。它会对页面发出警告。当我在https下运行我的应用程序时,应该使用https // c1.example.com / core / img1.png。我该怎么办?我应该总是使用https吗?或者有没有办法在auto?之间切换?

我将在IIS 7下运行我的应用程序。

2 个答案:

答案 0 :(得分:1)

  1. 您需要使用HTTP标头告诉浏览器如何缓存。它应该默认工作(假设您的URL中没有查询字符串),但如果没有,这是一篇关于缓存控制头的知识库文章:

    http://support.microsoft.com/kb/247404

    我真的不太了解IIS,所以我不确定是否还有其他潜在的陷阱。请注意,浏览器有时仍会发送HEAD请求。

  2. 我建议你设置图像服务器以便HTTP / S可以互换,然后只从HTTPS请求中提供HTTPS网址。

答案 1 :(得分:1)

是的,当通过https提供html页面时,您需要通过https提供所有资源。这就是使用https的全部要点。

如果href在html中是硬编码的,那么解决方案可能是使用响应过滤器来解析发送到客户端的所有内容,并在必要时用https替换http。一个简单的正则表达式应该可以解决问题plenty articlesIIS7 Cache-Control这些过滤器的工作方式。

关于缓存,您需要发送正确的缓存标头和etag。关于这一点有几个问题和答案就像这个问题{{3}}