我正在使用嵌入式系统上的自定义网络服务器,并有一些问题正确设置我的HTTP标头进行缓存。自定义网络服务器缓存
我们的网络服务器将所有动态内容生成为XML,我们使用半静态XSL文件来显示一些动态JSON请求以及半静态图像。我说“半静态”是因为当我们需要进行可能会更改XSL和图像文件的固件更新时,会出现问题。
以下是需要做的事情:缓存XSL和图像文件,不缓存XML和JSON响应。我对HTTP响应完全控制,我目前:
- 使用与XSL和图像文件的ETag,使用修改时间和大小来生成ETag的
- 设置的Cache-Control:在无缓存XML和JSON响应
正如我所说的,一切当XSL和图像文件有时缓存工作花花公子,直到固件更新。我已经看到它与最新版本的Firefox和Safari一起工作良好,但IE浏览器遇到了一些问题。
我知道这个问题的一个解决方案是简单地在每个版本后重命名XSL和图像文件(例如logo-v1.1.png,logo-v1.2.png)并将Expires标头设置为日期在将来,但这将是困难的XSL文件,我想避免这种情况。
注意:单元上有一个时钟,但需要用户进行设置,并且可能不是100%可靠,这可能会导致使用ETags时出现缓存问题。
我应该采用什么样的最佳做法?我希望避免尽可能多的网络服务器请求,但在软件更新之后使旧的XSL和图像文件无效是首要任务。