【问题标题】:How much time would be good to set in expire header for a website?为网站设置过期标头需要多长时间?
【发布时间】:2011-03-22 17:00:14
【问题描述】:

“网页变得越来越 复杂的脚本,风格 工作表、图像和 Flash。一种 首次访问页面可能需要 几个 HTTP 请求来加载所有 成分。通过使用 Expires 标头 这些组件变得可缓存, 这避免了不必要的 HTTP 请求 在随后的页面浏览量中。过期 标题通常与 图像,但它们可以而且应该是 用于所有页面组件,包括 脚本、样式表和 Flash。”

Yslow 中所写。

我的问题是,对于具有多个样式表、Flash 标题、Javascript、图像、PDF、MS Excel 文件、PPT 等的网站,在过期标题中设置多少时间比较合适?

如果我想对所有事物设置相同的过期时间。

【问题讨论】:

    标签: asp.net performance optimization yslow


    【解决方案1】:

    我所做的是将 CSS 和 JavaScript 文件的到期时间设置为较高的值,例如 1 或 5 年。当我更改样式表或 JS 文件时,我会更改其 URL 中的版本号,以防止从缓存中提供过时的文件。

    看起来这也是 SO 所做的:

    <link rel="stylesheet" href="http://sstatic.net/stackoverflow/all.css?v=e27c9b7474df">
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    <script src="http://sstatic.net/js/question.js?v=b05e8725a843" type="text/javascript"></script>
    

    所以当他们更改样式表时,他们会将all.css?v=e27c9b7474df 更改为all.css?v=some new versionquestion.js javascript 文件遵循相同的约定。但是文件名也可以,你可以调用你的 CSS/JS 文件all-1.css,然后将其更改为all-2.css 等。版本号的实际格式取决于你,只要 URL 发生变化。

    【讨论】:

      【解决方案2】:

      如果您的页面资源(图像/css/js)通常不会更改并且是静态的,您可以将 expires 标头设置为远类似于 1 年

      页面本身确实取决于内容。如果您的内容更改非常频繁,则应确保您的 expires 标头没有设置得那么大,否则您的访问者将收到过时的内容。

      如果您考虑像 SO 本身这样的网站,内容更改如此频繁以至于页面上的过期标题非常小。从标头来看,他们使用的最大年龄为 60 秒,并且在当前时间 1 分钟后有一个过期标头。

      【讨论】:

      • 因此,如果我为任何页面设置 1 年并且我在 6 个月后更新该页面,那么用户将无法看到这些更改。即使他们使用 Ctrl+F5 硬刷新页面。我说的对吗?
      • 对,如果页面仍然有效,并且用户没有清除浏览器缓存,那么浏览器会使用缓存的内容,直到满足页眉缓存要求。
      • 我正在为客户创建一个站点,但我不确定他什么时候会将任何内容更改为站点。所以我不应该在这种情况下设置 Expire 标头
      • 您可以将其设置为一些合理的值。请记住,缓存标头仅影响回访者。如果网站上的内容不会经常更改,您甚至可以设置 1 天,以便回访者获得快速浏览体验。
      • @metal-gear-solid: -1 基本上意味着没有缓存。通常,images/css/js 的缓存标头在 IIS 中的服务器级别处理。如果您在单独的文件夹中有这些资源,您可以更改 IIS 中每个文件夹的设置。这会将这些设置应用于该文件夹中的所有资源。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多