过期标题的智能解决方案

时间:2011-05-05 08:32:31

标签: header http-headers http-caching

我们希望为使用过的图像,css和javascript设置expires标头以改进pagespeed,但是我们在修改css或js脚本时知道了缓存问题。

是否可以在加载xhtml的文件中添加元标记或其他标记,告诉浏览器刷新每个元素,无论在现有图像,css或js上设置什么缓存?

3 个答案:

答案 0 :(得分:2)

您可能想要做的是静态内容的版本。所以说你有一个main.css文件然后你可以通过将它重命名为main_0.css(只是一个例子)来版本化,然后你将缓存过期设置为一年。如果您需要更新main.css,只需增加版本号并更新您的参考。然后所有客户都将获得最新版本。

有几种解决方案可以为您进行此版本控制,但这是基本原则..

我总是发现当有缓存相关问题时,theese资源非常有用:

  1. http://code.google.com/intl/no/speed/page-speed/docs/caching.html
  2. http://code.google.com/intl/no/speed/page-speed/docs/filters.html
  3. 希望这有帮助。

    修改

    这是一个版本控制解决方案(mod_pagespeed),它完成了我上面解释的内容:

    1. http://code.google.com/intl/no/speed/page-speed/docs/filter-cache-extend.html

答案 1 :(得分:2)

据我所知,没有这样的捷径。

即使它是 - 那将是什么意思?发送这样的头部将首先打败未来到期头的目的。

设置过期标头时,您需要为元素添加某种资产版本控制,例如<link rel="stylesheet" href="css/style.css?v=2">

更改资产的路径将实现相同的目标。

是的,这是一个麻烦。但是cache invalidation is a hard problem,真的没有简单的方法。

答案 2 :(得分:1)

  

是否可以在加载xhtml的文件中添加元标记或其他标记,告诉浏览器刷新每个元素,无论在现有图像,css或js上设置什么缓存?

据我所知。

  

我们希望为使用过的图片,css和javascript设置expires标头以改善pagespeed

我认为这是件好事。

  

但我们知道修改css或js脚本时的缓存问题。

如果您对CSS或JS进行了大幅度的更改,那么无论如何您都应该进行更改。通过将新的CSS和JS放在不同的路径上来管理这些更改,并在进行更改时更改HTML中的引用。这允许您:

  • 立即推出/回来
  • 通过动态生成这些引用来进行选择性推出
  • 网络日志现在为跟踪错误报告提供了清晰的审计跟踪
  • 避免CSS和JS的短期缓存存在任何问题