影响 Web 浏览器中图像缓存的完整因素有哪些?Web 开发人员对此有多少控制权,浏览器设置有多少?对于其他类型的资产(即脚本、音频)是否有不同的考虑?
谢谢
整套因素:
Web 开发人员几乎没有控制权,但这很好。请记住,缓存是为了最终用户的利益而进行的,通常是为了减少页面加载时间,而且您通常无法了解每个用户特定的所有注意事项。
您可以控制的位是过期时间和无缓存行为。这些分别指定用户想要重新获取资源,因为它预计已经更改或由于其他原因不应该被缓存。
浏览器可能会以不同于其他资源的方式处理图像(主要是在未指定时默认过期时间不同),但您可以为任何资源发送 HTTP 标头。
从客户端,检查客户端浏览器是否将 If-Modified-Since 标头发送到服务器。如果客户端发送标头,IIS 将响应 304 Not Modified,因此,客户端将使用其本地缓存来显示/使用文件。
客户端设置对此负责。IE -> 工具 -> Internet 选项 -> 浏览历史记录 -> 设置 -> 自动将确保发生这种情况。不同的浏览器对此设置有不同的区域。
对于脚本/音频,您可以将它们放在内容的特殊文件夹中,并简单地从服务器设置内容过期,以便服务器在请求时向客户端发送适当的信息以缓存文件。不过,这不会是开发人员设置。
开发人员设置通常用于动态文件。根据语言 [在 ASP.NET 中,OutputCache 指令创建不同的缓存头],这会有所不同。