V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Reign
V2EX  ›  程序员

由一次玩笑回复想到的,或许所有的缓存真的该叫做薛定谔的缓存

  •  
  •   Reign · 2017-07-13 13:24:58 +08:00 · 3765 次点击
    这是一个创建于 2677 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚刷 V 站,看到一个帖子,https://www.v2ex.com/t/374988#r_4523626, 自我一句开玩笑的回复,让我突然意识到,也许真的所有缓存都该叫做薛定谔的缓存。结合我的项目谈谈

    这几天开发一个图片项目,需要将图片裁剪成不同的分辨率并采用伪静态的形式储存,比如 www。abc。com/little-cat.jpg ,用户要访问其 800×600 分辨率的图片时,伪静态地址是 www。abc。com/little-cat-800x600.jpg ,这期间服务器先查找是否存在 little-cat-800x600.jpg 这张图片,如果存在,则静态输出,如果不存在,交给 imagemagick 裁剪后,生成 little-cat-800x600.jpg ,再静态输出,大部分图片项目都是这样的,很好理解,如果每次都用 php 裁剪然后动态输出,服务器开销非常大,只能生成缓存。

    现在我问你,我的服务器上有一张 little-dog.jpg 的原始大图,你能不能告诉我是否确定上面有 little-dog-800x600.jpg ,你只能通过浏览器访问后,根据加载的时间长短判断 little-dog-800x600.jpg 原先是否存在于服务器上,因为很有可能,Googlebot 也访问过这个伪静态地址,bingbot 也可能访问了,baiduBot 也可能访问了,你没法判断 little-dog-800x600.jpg 在你访问之前已经存在于服务器上

    就像薛定谔的猫一样,你访问这个伪静态地址时,整个硬盘进入了两个平行宇宙,一个宇宙中,该硬盘还是跟原来一模一样的容量,另一个宇宙中,该硬盘已经被 little-dog-800x600.jpg 占用了一部分空间

    所以这也就解释了至于为啥会有平行宇宙,我的观点,类比于服务器,每次 phpmagick 动态裁剪实在太消耗服务器,我们这个世界也在一个服务器运维当中,说人话:我们在“缸中之脑”中,不懂缸中之脑请自行渣度

    我编不下去了

    20 条回复    2017-07-14 14:47:34 +08:00
    xAx
        1
    xAx  
       2017-07-13 13:57:48 +08:00
    通过智商降频黑 php,黑的漂亮
    crown
        2
    crown  
       2017-07-13 14:14:39 +08:00
    我竟无言以对
    Famio
        3
    Famio  
       2017-07-13 14:16:45 +08:00
    程序员们现在的工作压力已经这么大了?
    xmadi
        4
    xmadi  
       2017-07-13 14:28:13 +08:00 via iPhone
    可以可以 手动滑稽
    Microi
        5
    Microi  
       2017-07-13 14:31:42 +08:00
    如果是认真的,我只能说,漏洞百出…
    wtks1
        6
    wtks1  
       2017-07-13 14:52:21 +08:00 via iPhone
    好像 scp 基金会有几台被收容的电脑就是这种原理.....
    LaoTouGuai
        7
    LaoTouGuai  
       2017-07-13 15:22:02 +08:00
    和猫还是不一样的吧,猫的死活是在观察者观测后确定的,观测前处于叠加态,观测后坍缩成生、或死的本征态;

    但对于 little-dog-800x600.jpg 是否存在这个状态,访问者、bot 就好比观察者,缓存在没有被观测(访问)之前是不存在于服务器上的,这不是叠加态;被观测(访问)后存在了,这个状态也是确定的。

    至于为什么会有楼主描述的这种情况,只是访问者不知道在其之前有没有其他人访问过而已,访问者只能通过浏览器访问这一种渠道来获取缓存的存在状态。访问者在主观上认为,自己没有进行观测,所以缓存是处于存在与不存在的叠加态。但从客观角度来看,第一个访问的(不管是人还是 bot )就已经将缓存是否存在的状态确定下来了。

    假设你是一个全知的存在,能随时观测世界上的事物,知道某台服务器在此刻被多少人访问、某个硬盘的存储状态、某张图片是否生成了缓存、某个女同事今天的胖次花色,可以通过浏览器访问之外的渠道来知晓缓存是否存在,那就不会觉得这个状态是不确定的了。

    所以这只是我们的主观感受而已。
    QAPTEAWH
        8
    QAPTEAWH  
       2017-07-13 15:26:59 +08:00   ❤️ 1
    为缓存命中也加个延迟,这样你就区别不出来了
    relaxchen
        9
    relaxchen  
       2017-07-13 18:22:52 +08:00
    所以你们都不看最后一句的咯
    noNOno
        10
    noNOno  
       2017-07-13 18:59:04 +08:00
    点个赞
    hareandlion
        11
    hareandlion  
       2017-07-13 19:07:54 +08:00 via iPhone
    @QAPTEAWH 最好再补个进度条
    gyorou
        12
    gyorou  
       2017-07-13 19:19:57 +08:00
    裁图可以交给云存储或者 cdn 做。
    jarell
        13
    jarell  
       2017-07-13 19:30:18 +08:00   ❤️ 1
    @LaoTouGuai 这个和猫没有本质的区别。你把装猫的盒子弄大点,里面再塞个人穿上防毒面具观察猫,包括这个人在内的整个系统,对外部观察者来说还是处于叠加状态。如果塞上更多的人呢? 如果极端一点,塞上地球上一半人,这个系统对外部来说还是叠加状态。更极端一点,你把自己装在一个密封的柜子里,在你出来之前整个外部世界也是处于叠加状态的。 另外量子物理决定了自由意志。如果世界只遵守经典物理,那么一切都是注定的。
    araraloren
        14
    araraloren  
       2017-07-14 08:47:47 +08:00
    后面说的不对,`薛定谔的猫` 并没有涉及到平行宇宙学说。。

    这个例子和猫不一样的地方是,你一旦“观察了”,缓存即存在了。。 猫可能还活着。。

    很多量子层面的行为我们肯定无法理解,比如量子隧穿,量子纠缠。。
    CodingPuppy
        15
    CodingPuppy  
       2017-07-14 08:57:52 +08:00 via Android
    薛定谔和他那只猫的棺材板都快盖不住了
    soulsxd
        16
    soulsxd  
       2017-07-14 09:27:09 +08:00
    万物皆为空
    studycwq
        17
    studycwq  
       2017-07-14 09:43:36 +08:00 via Android
    现在程序员都这么闲了?
    Microi
        18
    Microi  
       2017-07-14 09:46:30 +08:00
    这么说吧:Log 可以不干涉地观测整个过程。
    lepig
        19
    lepig  
       2017-07-14 12:57:25 +08:00
    薛定谔和他那只猫的棺材板都快盖不住了
    flyingghost
        20
    flyingghost  
       2017-07-14 14:47:34 +08:00
    我们有薛定谔的图片这种错觉,是因为我们只有一种观测手段:静态地址。换一种观测手段(例如,进机房看磁盘),你就打开一个新世界,薛定谔也就不存在了。
    同样,我们不知道猫是死是活,也是因为我们目前只有当前纬度这么一种侵入式的会造成塌缩的观测手段。换一个纬度就好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:20 · PVG 18:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.