最近在学习浏览器的缓存机制,看到有一种方案,使用强缓存,资源名用文件名+md5来命名,实现资源的更新,对于这个方案有几点疑问:
是否每次修改了资源,都要在html中修改link标签,把url指向最新的资源。这样不会很麻烦吗?尤其是同一个资源被无数html引用的时候(所以会有类似的工具/脚本?)
浏览器也会缓存这个html文件,那么html文件自身如何更新呢?比如我用node写个服务器,可能一句app.use('/', index);
就好了,但是每次浏览器也会对html进行缓存,如果用到上述这种方案的话,是否应该在服务器这里做出改动,让所有返回的html文件,都不使用强缓存,这样每次就可以加载到最新修改的html了。(我也查看了几家大网站的F12,有的html就是200,比如百度和网易,新浪这种还是返回的304)
可以讲一讲详细的方案吗。。查看很多资料都是一句“资源名+md5命名,每次加载最新的资源”,初学者在实现上有些看不懂。。。
巴扎黑2017-04-17 15:30:00
-> 1. 리소스가 업데이트될 때마다 HTML을 업데이트해야 합니다. 예를 들어 HTML 페이지는 템플릿 엔진이고 md5 파일 접미사는 Webpack에 의해 생성됩니다. . 그냥 렌더링하세요.
-> 2. 특정 전략을 참조하세요. 정적 파일인 경우 일반적으로 HTTP 프로토콜을 통해 파일의 업데이트 시간이나 etag를 확인합니다. 업데이트되지 않은 경우 304를 반환합니다. 업데이트되면 200이 반환됩니다. HTML 파일은 서버에 배치되고 정적 리소스는 캐시에서 200을 생성하여 각 요청에 대해 페이지를 렌더링하고 생성해야 하는 경우 일반적으로 사용됩니다. 200.
-> 3. 전체 프로세스는 비즈니스 및 도구 체인에 따라 매우 번거롭습니다. 너무 복잡하고 대부분의 사람들은 그것에 대해 이야기할 기분이 아닙니다. , https://medium.com/@okonetchn...
등