zoukankan      html  css  js  c++  java
  • 如何动静分离?

    原文地址:如何动静分离? 作者:expert1

        某次面试,hire manager问我如何做一个大规模的网站,我把我所知道的都讲了,包括squid做的cdn cache等等,他又问我,你觉得cdn这部分有什么瓶颈吗?我当时只想到所有动静态请求都路过squid,只是苦苦想着如何去掉动态的请求,他接着问,如何实现?我当时真想不到办法了。后来突然想起看的介绍,实际上我也接触过的,域名分离即可。比如某client的某个请求包含http:/xxx.com,这里肯定包含了图片,css,html之类,也少不了动态脚本比如php,jsp等需要交互的sql查询,那么涉及到静态的部分,按照dns的策略,到squid上,走之前的路,而动态的直接回web源即可。
         这个也不是没有弊端,程序里涉及到静态资源连接如图片等一律写域名。比如
    • <?php
    • echo "this is sina corporation logo picture :";
    • ?>

    ok,打开浏览器输入http://10.1.1.1/pic.php

        fine ,it works now,看到了sina的logo,以此类推,只需要遵守html语法规则,在你想要的地方插入图片url,而这图片放在另外的server上,有单独的domain,可以cname到cdn上,这样你打开www.sina.com,凡是需要查询的走10.1.1.1,涉及到图片的,直接走http协议到pic 服务器上取,好伟大的html啊。动静就这样分离了,唯一需要确认的就是图片的url要正确,可以在pic前面放api,专门查询后端的图片位置,仅此而已。

       再扩展一下:

    1. <?php
    2. $url="http://i3.sinaimg.cn/home/deco/2009/0330/logo_home.gif";
    3. echo "this is sina corporation logo picture :";
    4. ?>

    这样图片url确定了,少量的图片前端开发还能写上去,但成千上万张呢?还有这样固定了,也不方便扩展啊?如何来做?需要在pic前开一个API给前端调用,比如这里/home/deco/2009/0330/logo_home.gif可以记录在mysql,然后前端需要的时候,直接select 数据库查到图片的存储路径,然后拼接成$url给前端。

    就是sql=select * from pic_table where '条件=xxx';

    把查询结果/home/deco/2009/0330/logo_home.gif赋给$path

    拼凑新的url,$url="http://i3.sinaimg.cn".$path;

    ok,图片链接完成。

    简述结束。

  • 相关阅读:
    [SHOI2015]零件组装机
    [AH2017/HNOI2017]影魔
    空指针RE第一次公开赛-笔记
    i春秋2020新春公益赛WP
    博客园Markdown编辑器修改代码配色、添加代码行号
    buuctf Writeup
    关于Tarjan的一些问题
    NOIP2013D1T3货车运输 (生成树+树链剖分)
    1051: [HAOI2006]受欢迎的牛 (tarjan强连通分量+缩点)
    CodeForces 438D The Child and Sequence (线段树 暴力)
  • 原文地址:https://www.cnblogs.com/wajika/p/6232210.html
Copyright © 2011-2022 走看看