Iis 高流量静态站点的HTTP缓存最佳实践是什么?

Iis 高流量静态站点的HTTP缓存最佳实践是什么?,iis,web,http-caching,Iis,Web,Http Caching,我们有一个流量相当高的静态站点(即没有服务器代码),有很多图像、脚本、css,由IIS 7.0托管 我们希望打开一些缓存以减少服务器负载,并考虑将web内容的过期时间设置为将来某个时间。在IIS中,我们可以通过IIS响应头模块中公共http头的“过期web内容”部分在全局级别执行此操作。可能会将内容设置为在服务7天后过期 据我所知,这实际上只是设置max ageHTTP响应头,我想这是有道理的 现在,困惑是: 首先,我检查过的所有浏览器(IE9、Chrome、FF4)似乎都忽略了这一点,仍然向服

我们有一个流量相当高的静态站点(即没有服务器代码),有很多图像、脚本、css,由IIS 7.0托管

我们希望打开一些缓存以减少服务器负载,并考虑将web内容的过期时间设置为将来某个时间。在IIS中,我们可以通过IIS响应头模块中公共http头的“过期web内容”部分在全局级别执行此操作。可能会将内容设置为在服务7天后过期

据我所知,这实际上只是设置
max age
HTTP响应头,我想这是有道理的

现在,困惑是:

  • 首先,我检查过的所有浏览器(IE9、Chrome、FF4)似乎都忽略了这一点,仍然向服务器发出有条件的请求,以查看内容是否发生了变化。所以,我不完全确定“最大年龄”响应标题的实际效果是什么?!可能是旧浏览器吗?还是网络缓存

  • 这是有可能的,我们可能希望在短时间内更改网站中的图像。。。我猜如果最大年龄真的被某个东西使用了,就其本质而言,它不会检查这张图片是否已经改变了7天。。。所以这也不是我们想要的

  • 我想知道是否最好的做法是将一个人的站点划分为内容确实不会经常更改的文件夹,并且只会打开这些文件夹的一些长期过期?如果需要,可以更改查询字符串以强制刷新这些文件夹中的内容(例如/assets/images/background.png?version=2)

    不管怎么说,在浏览了(相当枯燥的!)和一些文章之后,我仍然没有真正感觉到在我们的情况下什么是正确的


    任何与我们类似情况的真实体验都将不胜感激

    浏览器首先获取HTML,然后获取其中的所有资源(css、javascript、图像等)

    如果你让HTML很快过期(例如1小时或1天),然后让其他资源在1年后过期,你可以两全其美

    当您需要更新图像或其他资源时,只需更改该文件的名称,并更新HTML以匹配

    下次用户获取新的HTML时,浏览器将看到该图像的新URL,并获取新的URL,同时从缓存中获取所有其他资源


    此外,在撰写本文时(2015年12月),Firefox将服务器的最大并发连接数限制为六(6)。这意味着,如果您有30个或更多的资源都托管在同一个网站上,则在加载页面之前,任何时候都只能下载6个资源。您可以通过使用内容交付网络(CDN)来加快下载速度,这样所有内容都可以一次下载。

    无服务器代码的高流量+IIS 7.0听起来最好的优化方法是使用nginx(在我看来,使用像IIS这样低劣的东西的唯一正当理由是,如果您真的需要它来编写另一台Web服务器上不支持的服务器端代码——因为事实并非如此,所以没有理由这么做)。我真的不想在这里进行攻击Web服务器的竞争-由于各种各样的原因无法更改平台,我真的不想进入…只是有趣的HTTP最佳实践。我不知道IIS中是否有添加任意头的选项,但您想要的是
    过期:
    上次修改:
    。这告诉代理以及客户端何时获取新副本。您还可以在HTML中软嵌入
    Expires:
    ,作为
    http equiv=“Expires”
    关于图像等。如果我对IIS的评论听起来有点刺耳,那就很抱歉了。只是它并不完全是轻量级的,在我看来,在不迫切需要的时候运行超重量级程序似乎是第一件要改变的事情。但是,好吧,让我们跳过这一点。如果你能设置这些标题,它可能会有所帮助:-)谢谢<当指定“x天”时,使用“代码>最长期限”代替“代码>到期”。。但是如果我指定了一个明确的到期日期,那么它将使用
    expires
    。两者似乎都被浏览器忽略了。此外,始终发送上次修改的
    ,是的,您可以更改所需的任何http头。我发现IIS7非常好,但这也是另一个故事:)有趣的是,expires头对我来说很好(至少在Firefox上)。顺便说一句,您上面描述的“可能想很快更改图像”是ETag试图解决的问题。但这当然意味着您将不可避免地看到代理正在为其进行探测。我更喜欢给短命的东西3-4天的生存时间,这已经减少了90%的请求。对您的图像使用Coral cdn是一种选择吗?