猿问

通过Params中断缓存

通过Params中断缓存

我们希望在生产部署上缓存半衰期,但不要浪费大量的时间来计算出这样做的系统。我的想法是用当前版本号对CSS和js文件的末尾应用一个Param:

<link rel="stylesheet" href="base_url.com/file.css?v=1.123"/>

两个问题:这会有效地破坏缓存吗?解析会不会导致浏览器从该url中缓存响应,因为param表示这是动态内容?


开满天机
浏览 405回答 3
3回答

MYYA

帕拉姆?v=1.123指示查询字符串,因此浏览器会认为它是一条新路径,例如,?v=1.0..从而导致它从文件加载,而不是从缓存加载。如你所愿。而且,浏览器将假设下一次调用时源将保持不变。?v=1.123和应用那个字符串来缓存它。因此,不管您的服务器是如何设置的,它都将保持缓存状态,直到您移动到?v=1.124等等。

叮当猫咪

将版本号放在实际文件名中更安全。这允许同时存在多个版本,因此您可以推出一个新版本,如果仍然存在请求旧版本的缓存HTML页面,它们将获得与其HTML一起工作的版本。注意,在互联网上最大的版本部署之一中,jQuery在实际文件名中使用版本号,并且安全地允许多个版本共存,而不需要任何特殊的服务器端逻辑(每个版本只是一个不同的文件)。当您部署新页面和新链接文件(这正是您想要的)时,缓存就会崩溃一次,从那时起,可以有效地缓存这些版本(您也希望如此)。
随时随地看视频慕课网APP
我要回答