V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rain0002009
V2EX  ›  问与答

面试官说 缓存都是前端的事,这是真的吗

  •  
  •   rain0002009 · 2020-05-13 15:36:48 +08:00 · 3374 次点击
    这是一个创建于 1441 天前的主题,其中的信息可能已经有所发展或是发生改变。

    面试官 问我 强缓存,协商缓存那些事,这些问题是常常问,常常看,常常忘,我也就知道写 Cache-control: no-cache 这种水平了,然后又说了一些其他去缓存的方法,毕竟咱平常也就干干这种事了,面试官说这只是去缓存,缓存主要都是前端控制的,我说不是服务端控制,咱不就配合配合吗

    然后就聊不下去了呀,各位前端大佬,有啥地方是咱前端控制缓存的呀,还不是去缓存那种。部署?

    23 条回复    2020-05-15 17:27:29 +08:00
    huayumo
        1
    huayumo  
       2020-05-13 15:58:56 +08:00
    这些人就爱瞎几把显摆,做了这么多年站了,缓存也就是图片之类的静态上 cdn,后端优化数据查询,速度溜溜的,然后加带宽,加服务器
    rioshikelong121
        2
    rioshikelong121  
       2020-05-13 16:06:08 +08:00
    request headers 里面可以设置 Cache Control 这不就是前端可以控制的么。
    freshgoose
        3
    freshgoose  
       2020-05-13 16:06:20 +08:00
    楼主知识水平还不够啊,你大体上是对的,可以自信点。
    ypzhou
        4
    ypzhou  
       2020-05-13 16:06:22 +08:00
    假的
    rioshikelong121
        5
    rioshikelong121  
       2020-05-13 16:06:38 +08:00
    html meta 应该也可以设置缓存策略。
    falcon05
        6
    falcon05  
       2020-05-13 16:06:49 +08:00 via iPhone
    前后端都有缓存的概念,但面试官这么说肯定是错的,前端缓存估计是 cookie, local storage 之类,还有离线缓存
    manami
        7
    manami  
       2020-05-13 16:09:42 +08:00
    叫面试官使用前端实现下分布式缓存?
    cjc2017
        8
    cjc2017  
       2020-05-13 16:39:44 +08:00
    楼主应该是被面试官从 http=>请求=> 缓存这么问过来的吧
    rain0002009
        9
    rain0002009  
    OP
       2020-05-13 16:42:25 +08:00
    @cjc2017 #8 不 是直接问你 缓存你有哪些了解 强缓存 协商缓存那些
    dddd1919
        10
    dddd1919  
       2020-05-13 17:08:08 +08:00
    说 [都是] 肯定不对,但强缓存和协商缓存就是前端控制有啥问题呢?
    后端缓存主要为解决数据库 IO 压力等等,很少需要前端配合,跟面试官提到的缓存也不是一个概念,小朋友你是认真的么?
    rain0002009
        11
    rain0002009  
    OP
       2020-05-13 17:44:02 +08:00
    @dddd1919 #10 可能我表达的太绝对了吧 我主要是想表达出面试官的那个意思 按他的话理解下来 前端是主导这些设置的 而且不仅仅只是设置去缓存这样 还应该有更高级的作用

    但 以我有限的水平 真不知道啥高级应用 除了 去去缓存
    cjc2017
        12
    cjc2017  
       2020-05-13 18:23:17 +08:00
    @dddd1919 虽然缓存几个字段和参数作用面试的时候都能说出来 但前端处理缓存这块还真没怎么在实际项目中专门做过 还想就这个机会请教老哥一下
    我个人在项目中处理优化涉及到缓存方面的一般是这样 1.HTML 文件添加 meta 标签设置 Cache-Control:no-store 一直不做缓存保持最新(因为 webpack 打包 保证 html 内 js 和 css 的引用) 2.基础框架和依赖文件和图片走 cdn 缓存 3 打包出来的 js 文件使用 etag(不过这个是后端设置的)
    因为实践的比较少 不太清楚强缓存和协商缓存还有哪些具体的场景是前端可以控制的呢
    imhxc
        13
    imhxc  
       2020-05-13 18:31:26 +08:00
    楼上提到的强缓存、协商缓存是前端控制的,怎么感觉和我理解的不一样呀。
    严格来说,我理解的强缓存和协商缓存需要由后端配合,如果后端不配合,前端通过设置 header 头信息来控制强缓存、协商缓存是没有用的。
    johnnyNg
        14
    johnnyNg  
       2020-05-13 19:20:10 +08:00
    不是应该是后端设置返回头来控制缓存吗?怎么成了前端设置请求头了
    passerbytiny
        15
    passerbytiny  
       2020-05-13 19:42:39 +08:00
    单论 http 协议的话,缓存都是浏览器负责最终处理的,但是否缓存由浏览器和服务器协商。因为最终由浏览器负责,那么理论上来说,浏览器拥有蛮不讲理完全控制权。这是浏览器、web 服务器、http 协议的事,干前后端屁事。
    xizismile
        16
    xizismile  
       2020-05-13 19:59:33 +08:00 via Android
    这个面试官很菜,按你的理解来就对了,不要被他影响
    xizismile
        17
    xizismile  
       2020-05-13 20:00:06 +08:00 via Android
    面试的多了,爱显摆的垃圾面试官也是很多的,要学会区分
    acthtml
        18
    acthtml  
       2020-05-13 20:12:07 +08:00
    可能面试官说的“前端”定义更加宽泛吧,包含了你说的服务端。
    sandxin
        19
    sandxin  
       2020-05-13 23:22:13 +08:00 via Android
    有几个人在瞎扯,据我所知前端缓存控制只有 meta
    强缓存协商缓存都是 response heaher 控制
    常用实践是 html 不缓存,资源全部强缓存,发版变更资源 hash 。接口请求缓存 serveice worker 另当别论
    hellofrank
        20
    hellofrank  
       2020-05-14 09:45:44 +08:00
    非真
    dddd1919
        21
    dddd1919  
       2020-05-14 09:48:38 +08:00
    @cjc2017 缓存是前端控制,但协议本身很成熟,基本不需要人工处理,前端和后端框架都会自动处理。如果说需要人为控制么。。。。自己遇到的主要也就是填坑了,比如静态资源没打 tag,Etag 使用不当这种,可能需要变相的方式去解决因为缓存造成的问题。

    不过面试官说的前端控制,“前端”也可以指浏览器 /webview 这类的工具啊,也没说非得是前端工程师,咋代入感都这么强呢
    Exin
        22
    Exin  
       2020-05-14 09:48:54 +08:00
    有时候面试官会抛一些错误的观点,试探应试者。这种时候有信心就坚持观点怼上去,但要留好面子

    当然楼主遇到的面试官究竟懂不懂咱也不知道
    daya
        23
    daya  
       2020-05-15 17:27:29 +08:00 via iPhone
    缓存协商?是想问 etag 之类的吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3539 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:49 · PVG 12:49 · LAX 21:49 · JFK 00:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.