【问题标题】:IE7 not Caching CSS Image over SSLIE7 不通过 SSL 缓存 CSS 图像
【发布时间】:2009-09-23 19:43:01
【问题描述】:

我正在使用 Internet Explorer 的 WebDevHelper 工具栏对我的 SSL 站点上的 HTTP 请求/往返进行故障排除,并注意到 IE 重新下载了我的 CSS :hover images every 触发它们的时间。这会导致大量往返。

如何防止这种情况发生?

编辑:所有静态内容都通过 cache-control: public 提供,因此图像、javascript 等都缓存在 Firefox 和 Chrome 中。这个问题是 IE 特有的。

【问题讨论】:

  • 您确定这只发生在 SSL 上,而不发生在非 SSL 页面上吗?

标签: css ssl image-caching


【解决方案1】:

当然,通过 http 提供静态内容,但不要为 :hover 状态制作单独的图像。应使用适当的 css 图像精灵。通过 https 或 http,这只是一个很好的做法。有大量资源可用于创建精灵。据说 SpriteMe,[http://spriteme.org/] 是一种自动化 css 图片精灵创建的尝试。

【讨论】:

  • 我无法在 https 环境中通过 http 提供静态内容。这会产生令人讨厌的“包含不安全内容”警告。
  • 我会说你最好的选择是创建一些 CSS 精灵!您还将减少跨所有浏览器的 http 请求。
【解决方案2】:

如果图像是从不同于您的主页的主机名传送的,那么您将遇到此处描述的工件: http://blogs.msdn.com/ieinternals/archive/2010/04/21/Internet-Explorer-May-Bypass-Cache-for-Cross-Domain-HTTPS-Content.aspx

【讨论】:

    【解决方案3】:

    根据 Stackoverflow 的其他帖子,存在多个问题。 FireFox 2.x 也有这个问题。但 FireFox 3.x 没有。

    Will web browsers cache content over https

    同样在 Internet Explorer 中,您转到工具 > Internet 选项 > 高级选项卡 > 安全部分 > 不将加密页面保存到磁盘。在 IE6、7 和 8 中默认情况下似乎未选中它。

    【讨论】:

      【解决方案4】:

      出于安全原因,不会缓存通过 SSL 提供的内容。如果您想缓存某些内容,请通过 HTTP 提供。

      【讨论】:

      • 笼统地说这不是真的。 Firefox 缓存正确(我在所有静态内容上都有 cache-control:public),Chrome 和 Safari 也是如此。
      • 不要在 https 页面上提供 http 资源。你会得到让用户感到害怕的丑陋错误。
      • 无法使用 HTTPS 提供 HTTP 而不会在屏幕上出现一堆错误。
      • 亚历克斯:我不知道。您指的缓存控制是什么?这是一个 http[s] 标头吗?
      • 是的,“cache-control”是一个标头,告诉浏览器如何为您的页面提供服务。
      【解决方案5】:

      您是否尝试将这些类型的静态文件添加到标题中。

      P3P: CP="CAO PSA OUR"
      

      我知道这适用于 IE,以允许通过框架集和其他东西存储 cookie。不确定它是否适用于 HTTPS 下的静态文件。

      【讨论】:

      • 试过了,仍然收到所有图像的重新请求。如果您有(关闭/打开/悬停)3 图像组合,这真的很讨厌。
      【解决方案6】:

      我知道这听起来很奇怪... 尝试将 url 放入不存在的内容(404 错误)。在此之后,所有其余的图像都将被缓存。

      【讨论】:

        猜你喜欢
        • 2010-11-01
        • 2013-01-31
        • 1970-01-01
        • 2011-03-24
        • 2017-06-05
        • 1970-01-01
        • 2014-05-11
        • 2014-01-14
        • 2011-11-12
        相关资源
        最近更新 更多