¸üÐÂʱ¼ä:2022Äê12ÔÂ02ÈÕ14ʱ52·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
ǰÑÔ
¡¡¡¡Ìáµ½»º´æ£¬Ïë±ØÃ¿Ò»Î»Èí¼þ¹¤³Ìʦ¶¼²»Ä°Éú£¬ËüÊÇĿǰ¼Ü¹¹Éè¼ÆÖÐÌá¸ßÐÔÄÜ×îÖ±½ÓµÄ·½Ê½¡£
¡¡¡¡»º´æ¼¼Êõ´æÔÚÓÚÓ¦Óó¡¾°µÄ·½·½ÃæÃæ¡£´ÓÍøÕ¾Ìá¸ßÐÔÄܵĽǶȷÖÎö£¬»º´æ¿ÉÒÔ·ÅÔÚä¯ÀÀÆ÷£¬¿ÉÒÔ·ÅÔÚ·´Ïò´úÀí·þÎñÆ÷£¬»¹¿ÉÒÔ·ÅÔÚÓ¦ÓóÌÐò½ø³ÌÄÚ£¬Í¬Ê±¿ÉÒÔ·ÅÔÚ·Ö²¼Ê½»º´æÏµÍ³ÖС£
¡¡¡¡´ÓÓû§ÇëÇóÊý¾Ýµ½Êý¾Ý·µ»Ø£¬Êý¾Ý¾¹ýÁËä¯ÀÀÆ÷£¬CDN£¬Nginx´úÀí»º´æ£¬Ó¦Ó÷þÎñÆ÷£¬ÒÔ¼°Êý¾Ý¿â¸÷¸ö»·½Ú¡£Ã¿¸ö»·½Ú¶¼¿ÉÒÔÔËÓûº´æ¼¼Êõ¡£
¡¡¡¡

¡¡¡¡»º´æµÄÇëÇó˳ÐòÊÇ£ºÓû§ÇëÇó → HTTP »º´æ → CDN »º´æ → Nginx´úÀí»º´æ → ½ø³ÌÄÚ»º´æ → ·Ö²¼Ê½»º´æ¡£
¡¡¡¡ÔÚ¼¼ÊõµÄ¼Ü¹¹Ã¿¸ö»·½Ú¶¼¿ÉÒÔ¼ÓÈ뻺´æ£¬ÎÒÃÇ¿´¿´Ã¿¸ö»·½ÚÊÇÈçºÎÓ¦Óûº´æ¼¼ÊõµÄ¡£
¡¡¡¡2. HTTP»º´æ
¡¡¡¡Í¨³£ HTTP »º´æ²ßÂÔ·ÖΪÁ½ÖÖ£º
¡¡¡¡- Ç¿»º´æ
¡¡¡¡- ÐÉÌ»º´æ¡£
¡¡¡¡´Ó×ÖÃæÒâ˼ÎÒÃÇ¿ÉÒÔºÜÖ±¹ÛµÄ¿´µ½ËüÃǵIJî±ð£º
¡¡¡¡- Ç¿»º´æ¼´Ç¿ÖÆÖ±½ÓʹÓûº´æ¡£
¡¡¡¡- ÐÉÌ»º´æ¾ÍµÃºÍ·þÎñÆ÷ÐÉÌÈ·ÈÏÏÂÕâ¸ö»º´æÄܲ»ÄÜÓá£
¡¡¡¡Ç¿»º´æ
¡¡¡¡Ç¿»º´æ²»»áÏò·þÎñÆ÷·¢ËÍÇëÇó£¬Ö±½Ó´Ó»º´æÖжÁÈ¡×ÊÔ´£¬ÔÚ chrome ¿ØÖÆÌ¨µÄ network Ñ¡ÏîÖпÉÒÔ¿´µ½¸ÃÇëÇó·µ»Ø 200 µÄ״̬Â룬²¢ÇÒ`size`ÏÔʾ`from disk cache`»ò`from memory cache`;
¡¡¡¡ÐÉÌ»º´æ
¡¡¡¡ÐÉÌ»º´æ»áÏÈÏò·þÎñÆ÷·¢ËÍÒ»¸öÇëÇ󣬷þÎñÆ÷»á¸ù¾ÝÕâ¸öÇëÇóµÄ request header µÄһЩ²ÎÊýÀ´ÅжÏÊÇ·ñÃüÖÐÐÉÌ»º´æ£¬Èç¹ûÃüÖУ¬Ôò·µ»Ø 304 ״̬Âë²¢´øÉÏÐ嵀 response header ֪ͨä¯ÀÀÆ÷´Ó»º´æÖжÁÈ¡×ÊÔ´¡£
¡¡¡¡2.1 HTTP »º´æ¿ØÖÆ
¡¡¡¡ÔÚ HTTP ÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýÉèÖÃÏìӦͷÒÔ¼°ÇëÇóÍ·À´¿ØÖÆ»º´æ²ßÂÔ¡£
¡¡¡¡Ç¿»º´æ¿ÉÒÔͨ¹ýÉèÖÃ`Expires`ºÍ`Cache-Control` Á½ÖÖÏìӦͷʵÏÖ¡£Èç¹ûͬʱ´æÔÚ£¬`Cache-Control`ÓÅÏȼ¶¸ßÓÚ`Expires`¡£
¡¡¡¡Expires
¡¡¡¡Expires ÏìӦͷ£¬ËüÊÇ HTTP/1.0 µÄ²úÎï¡£´ú±í¸Ã×ÊÔ´µÄ¹ýÆÚʱ¼ä£¬ÆäֵΪһ¸ö¾ø¶Ôʱ¼ä¡£Ëü¸æËßä¯ÀÀÆ÷ÔÚ¹ýÆÚʱ¼ä֮ǰ¿ÉÒÔÖ±½Ó´Óä¯ÀÀÆ÷»º´æÖдæÈ¡Êý¾Ý¡£ÓÉÓÚÊǸö¾ø¶Ôʱ¼ä£¬¿Í»§¶ËÓë·þÎñ¶ËµÄʱ¼äʱ²î»òÎó²îµÈÒòËØ¿ÉÄÜÔì³É¿Í»§¶ËÓë·þÎñ¶ËµÄʱ¼ä²»Ò»Ö£¬½«µ¼Ö»º´æÃüÖеÄÎó²î¡£Èç¹ûÔÚ`Cache-Control`ÏìӦͷÉèÖÃÁË `max-age` »òÕß `s-max-age` Ö¸ÁÄÇô `Expires` »á±»ºöÂÔ¡£
Expires: Wed, 21 Oct 2015 07:28:00 GMT
¡¡¡¡Cache-Control
¡¡¡¡`Cache-Control` ³öÏÖÓÚ HTTP/1.1¡£¿ÉÒÔͨ¹ýÖ¸¶¨¶à¸öÖ¸ÁîÀ´ÊµÏÖ»º´æ»úÖÆ¡£Ö÷ÒªÓñíʾ×ÊÔ´»º´æµÄ×î´óÓÐЧʱ¼ä¡£¼´ÔÚ¸Ãʱ¼ä¶ËÄÚ£¬¿Í»§¶Ë²»ÐèÒªÏò·þÎñÆ÷·¢ËÍÇëÇó¡£ÓÅÏȼ¶¸ßÓÚ Expires¡£Æä¹ýÆÚʱ¼äÖ¸ÁîµÄÖµÊÇÏà¶Ôʱ¼ä£¬Ëü½â¾öÁ˾ø¶Ôʱ¼äµÄ´øÀ´µÄÎÊÌâ¡£
Cache-Control: max-age=315360000
¡¡¡¡`Cache-Control` ÓкܶàÊôÐÔ£¬²»Í¬µÄÊôÐÔ´ú±íµÄÒâÒåÒ²²»Í¬¡£
¡¡¡¡¿É»º´æÐÔ
¡¡¡¡- `public` ±íÃ÷ÏìÓ¦¿ÉÒÔ±»ÈκζÔÏó(°üÀ¨£º·¢ËÍÇëÇóµÄ¿Í»§¶Ë£¬´úÀí·þÎñÆ÷£¬µÈµÈ)»º´æ¡£
¡¡¡¡- `private` ±íÃ÷ÏìÓ¦Ö»Äܱ»µ¥¸öÓû§»º´æ£¬²»ÄÜ×÷Ϊ¹²Ïí»º´æ(¼´´úÀí·þÎñÆ÷²»ÄÜ»º´æËü)
¡¡¡¡- `no-cache` ²»Ê¹ÓÃÇ¿»º´æ£¬ÐèÒªÓë·þÎñÆ÷ÑéÐÉÌ»º´æÑéÖ¤¡£
¡¡¡¡- `no-store` »º´æ²»Ó¦´æ´¢Óйؿͻ§¶ËÇëÇó»ò·þÎñÆ÷ÏìÓ¦µÄÈκÎÄÚÈÝ£¬¼´²»Ê¹ÓÃÈκλº´æ¡£
¡¡¡¡¹ýÆÚ
¡¡¡¡- `max-age=` »º´æ´æ´¢µÄ×î´óÖÜÆÚ£¬³¬¹ýÕâ¸öÖÜÆÚ±»ÈÏΪ¹ýÆÚ¡£
¡¡¡¡- `s-maxage=` ÉèÖù²Ïí»º´æ¡£»á¸²¸Ç`max-age`ºÍ`expires`,˽Óлº´æ»áºöÂÔËü
¡¡¡¡- `max-stale[=]` ¿Í»§¶ËÔ¸Òâ½ÓÊÕÒ»¸öÒѾ¹ýÆÚµÄ×ÊÔ´£¬¿ÉÒÔÉèÖÃÒ»¸ö¿ÉÑ¡µÄÃëÊý£¬±íʾÏìÓ¦²»ÄÜÒѾ¹ýʱ³¬¹ý¸Ã¸ø¶¨µÄʱ¼ä¡£
¡¡¡¡- `min-fresh=` ¿Í»§¶ËÏ£ÍûÔÚÖ¸¶¨µÄʱ¼äÄÚ»ñÈ¡×îеÄÏìÓ¦
¡¡¡¡ÖØÐÂÑéÖ¤ºÍÖØÐ¼ÓÔØ
¡¡¡¡- `must-revalidate` ÈçÒ³Ãæ¹ýÆÚ£¬ÔòÈ¥·þÎñÆ÷½øÐлñÈ¡¡£
¡¡¡¡- `proxy-revalidate` Óë`must-revalidate` ×÷ÓÃÏàͬ£¬µ«ÊÇÓÃÓÚ¹²Ïí»º´æ¡£
¡¡¡¡ÆäËû
¡¡¡¡- `only-if-cached` ²»½øÐÐÍøÂçÇëÇó£¬ÍêȫֻʹÓûº´æ¡£
¡¡¡¡- `no-transform` ²»µÃ¶Ô×ÊÔ´½øÐÐת»»ºÍת±ä¡£ÀýÈ磬²»µÃ¶ÔͼÏñ¸ñʽ½øÐÐת»»¡£
¡¡¡¡ÐÉÌ»º´æ¿ÉÒÔͨ¹ý `Last-Modified`/`If-Modified-Since`ºÍ`ETag`/`If-None-Match`ÕâÁ½¶Ô Header À´¿ØÖÆ¡£
¡¡¡¡2.2 Last-Modified¡¢If-Modified-Since
¡¡¡¡`Last-Modified`Óë`If-Modified-Since` µÄÖµ¶¼ÊÇ GMT ¸ñʽµÄʱ¼ä×Ö·û´®£¬´ú±íµÄÊÇÎļþµÄ×îºóÐÞ¸Äʱ¼ä¡£
1.ÔÚ·þÎñÆ÷ÔÚÏìÓ¦ÇëÇóʱ£¬»áͨ¹ý`Last-Modified`¸æËßä¯ÀÀÆ÷×ÊÔ´µÄ×îºóÐÞ¸Äʱ¼ä¡£
¡¡¡¡2. ä¯ÀÀÆ÷ÔÙ´ÎÇëÇó·þÎñÆ÷µÄʱºò£¬ÇëÇóÍ·»á°üº¬`Last-Modified`×ֶΣ¬ºóÃæ¸ú×ÅÔÚ»º´æÖлñµÃµÄ×îºóÐÞ¸Äʱ¼ä¡£
¡¡¡¡3. ·þÎñ¶ËÊÕµ½´ËÇëÇóÍ··¢ÏÖÓÐ`if-Modified-Since`£¬ÔòÓë±»ÇëÇó×ÊÔ´µÄ×îºóÐÞ¸Äʱ¼ä½øÐжԱȣ¬Èç¹ûÒ»ÖÂÔò·µ»Ø 304 ºÍÏìÓ¦±¨ÎÄÍ·£¬ä¯ÀÀÆ÷Ö»ÐèÒª´Ó»º´æÖлñÈ¡ÐÅÏ¢¼´¿É¡£Èç¹ûÒѾÐ޸ģ¬ÄÇô¿ªÊ¼´«ÊäÏìÓ¦Ò»¸öÕûÌ壬·þÎñÆ÷·µ»Ø£º200 OK
<img src="images/image-20220718222822409.png" alt="image-20220718222822409" style="zoom:80%;" />
¡¡¡¡µ«ÊÇÔÚ·þÎñÆ÷ÉϾ³£»á³öÏÖÕâÖÖÇé¿ö£¬Ò»¸ö×ÊÔ´±»ÐÞ¸ÄÁË£¬µ«Æäʵ¼ÊÄÚÈݸù±¾Ã»·¢Éú¸Ä±ä£¬»áÒòΪ`Last-Modified`ʱ¼äÆ¥Åä²»É϶ø·µ»ØÁËÕû¸öʵÌ司¿Í»§¶Ë(¼´Ê¹¿Í»§¶Ë»º´æÀïÓиöһģһÑùµÄ×ÊÔ´)¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬HTTP/1.1 ÍÆ³öÁË`Etag`¡£Etag ÓÅÏȼ¶¸ßÓë`Last-Modified`¡£
¡¡¡¡2.3 Etag¡¢If-None-Match
¡¡¡¡`Etag`¶¼ÊÇ·þÎñÆ÷Ϊÿ·Ý×ÊÔ´Éú³ÉµÄΨһ±êʶ£¬¾ÍÏñÒ»¸öÖ¸ÎÆ£¬×ÊÔ´±ä»¯¶¼»áµ¼Ö ETag ±ä»¯£¬¸ú×îºóÐÞ¸Äʱ¼äûÓйØÏµ£¬`ETag`¿ÉÒÔ±£Ö¤Ã¿Ò»¸ö×ÊÔ´ÊÇΨһµÄ¡£
¡¡¡¡ÔÚä¯ÀÀÆ÷·¢ÆðÇëÇó£¬ä¯ÀÀÆ÷µÄÇëÇó±¨ÎÄÍ·»á°üº¬ `If-None-Match` ×ֶΣ¬ÆäֵΪÉϴηµ»ØµÄ`Etag`·¢Ë͸ø·þÎñÆ÷£¬·þÎñÆ÷½ÓÊÕµ½´Î±¨Îĺó·¢ÏÖ `If-None-Match` ÔòÓë±»ÇëÇó×ÊÔ´µÄΨһ±êʶ½øÐжԱȡ£Èç¹ûÏàͬ˵Ã÷×ÊԴûÓÐÐ޸ģ¬ÔòÏìÓ¦·µ 304£¬ä¯ÀÀÆ÷Ö±½Ó´Ó»º´æÖлñÈ¡Êý¾ÝÐÅÏ¢¡£Èç¹û²»Í¬Ôò˵Ã÷×ÊÔ´±»¸Ä¶¯¹ý£¬ÔòÏìÓ¦Õû¸ö×ÊÔ´ÄÚÈÝ£¬·µ»Ø×´Ì¬Âë 200¡£
¡¡¡¡3. CDN»º´æ
¡¡¡¡CDN£ºContent Delivery Network£¬¼´ÄÚÈÝ·Ö·¢ÍøÂ磬ËüÊǹ¹½¨ÔÚÏÖÓÐÍøÂç»ù´¡ÉϵÄÐéÄâÖÇÄÜÍøÂ磬ÒÀ¿¿²¿ÊðÔÚ¸÷µØµÄ±ßÔµ·þÎñÆ÷£¬Í¨¹ýÖÐÐÄÆ½Ì¨µÄ¸ºÔؾùºâ¡¢µ÷¶È¼°ÄÚÈÝ·Ö·¢µÈ¹¦ÄÜÄ£¿é£¬Ê¹Óû§ÔÚÇëÇóËùÐè·ÃÎʵÄÄÚÈÝʱÄܹ»¾Í½ü»ñÈ¡£¬ÒÔ´ËÀ´½µµÍÍøÂçÓµÈû£¬Ìá¸ß×ÊÔ´¶ÔÓû§µÄÏìÓ¦ËÙ¶È¡£
¡¡¡¡±¾µØ´æ´¢ºÍä¯ÀÀÆ÷»º´æ´øÀ´µÄÐÔÄÜÌáÉýÖ÷ÒªÕë¶ÔµÄÊÇä¯ÀÀÆ÷¶ËÒѾ»º´æÁËËùÐèµÄ×ÊÔ´£¬µ±·¢Éú¶þ´ÎÇëÇóÏàͬ×ÊԴʱ±ãÄܹ»½øÐпìËÙÏìÓ¦£¬±ÜÃâÖØÐ·¢ÆðÇëÇó»òÖØÐÂÏÂÔØÈ«²¿ÏìÓ¦×ÊÔ´¡£
¡¡¡¡ÕâЩ·½·¨¶ÔÓÚÊ×´Î×ÊÔ´ÇëÇóµÄÐÔÄÜÌáÉýÊÇÎÞÄÜΪÁ¦µÄ£¬ÈôÏëÌáÉýÊ×´ÎÇëÇó×ÊÔ´µÄÏìÓ¦ËÙ¶È£¬³ýÁË×ÊԴѹËõ¡¢Í¼Æ¬ÓÅ»¯µÈ·½Ê½£¬»¹¿É½èÖúCDN¼¼Êõ¡£
¡¡¡¡

¡¡¡¡3.1 ʹÓÃCDNÍøÂç×ÊÔ´»ñÈ¡¹ý³Ì
¡¡¡¡Èç¹ûʹÓÃÁËCDNÍøÂ磬Ôò×ÊÔ´»ñÈ¡µÄ´óÖ¹ý³ÌÊÇÕâÑùµÄ¡£
1.ÓÉÓÚDNS·þÎñÆ÷½«¶ÔCDNµÄÓòÃû½âÎöȨ½»¸øÁËCNAMEÖ¸ÏòµÄרÓÃDNS·þÎñÆ÷£¬ËùÒÔ¶ÔÓû§ÊäÈëÓòÃûµÄ½âÎö×îÖÕÊÇÔÚCDNרÓõÄDNS·þÎñÆ÷ÉÏÍê³ÉµÄ¡£
¡¡¡¡2. ½âÎö³öµÄ½á¹ûIPµØÖ·²¢·ÇÈ·¶¨µÄCDN»º´æ·þÎñÆ÷µØÖ·£¬¶øÊÇCDNµÄ¸ºÔؾùºâÆ÷µÄµØÖ·¡£
¡¡¡¡3. ä¯ÀÀÆ÷»áÖØÐÂÏò¸Ã¸ºÔؾùºâÆ÷·¢ÆðÇëÇ󣬾¹ý¶ÔÓû§IPµØÖ·µÄ¾àÀë¡¢ËùÇëÇó×ÊÔ´ÄÚÈݵÄλÖü°¸÷¸ö·þÎñÆ÷¸´ÔÓ×´¿öµÄ×ۺϼÆË㣬·µ»Ø¸øÓû§È·¶¨µÄ»º´æ·þÎñÆ÷IPµØÖ·¡£
¡¡¡¡4. ¶ÔÄ¿±ê»º´æ·þÎñÆ÷ÇëÇóËùÐè×ÊÔ´µÄ¹ý³Ì¡£
¡¡¡¡Õâ¸ö¹ý³ÌÒ²¿ÉÄܻᷢÉúËùÐè×ÊԴδÕÒµ½µÄÇé¿ö£¬ÄÇô´Ëʱ±ã»áÒÀ´ÎÏòÆäÉÏÒ»¼¶»º´æ·þÎñÆ÷¼ÌÐøÇëÇó²éѯ£¬Ö±ÖÁ×·Ëݵ½ÍøÕ¾µÄ¸ù·þÎñÆ÷²¢½«×ÊÔ´ÀÈ¡µ½±¾µØ¡£
¡¡¡¡3.2 CDNÍøÂçµÄºËÐŦÄܰüÀ¨Á½µã£º
¡¡¡¡»º´æÓë»ØÔ´
¡¡¡¡»º´æÖ¸µÄÊǽ«ËùÐèµÄ¾²Ì¬×ÊÔ´Îļþ¸´ÖÆÒ»·Ýµ½CDN»º´æ·þÎñÆ÷ÉÏ;
¡¡¡¡»ØÔ´Ö¸µÄÊÇÈç¹ûδÔÚCDN»º´æ·þÎñÆ÷ÉϲéÕÒµ½Ä¿±ê×ÊÔ´£¬»òCDN»º´æ·þÎñÆ÷ÉϵĻº´æ×ÊÔ´ÒѾ¹ýÆÚ£¬ÔòÖØÐÂ×·Ëݵ½ÍøÕ¾¸ù·þÎñÆ÷»ñÈ¡Ïà¹Ø×ÊÔ´µÄ¹ý³Ì¡£
¡¡¡¡4. Nginx´úÀí»º´æ
¡¡¡¡Óû§ÇëÇóÔÚ´ïµ½Ó¦Ó÷þÎñÆ÷֮ǰ£¬»áÏÈ·ÃÎÊ Nginx ¸ºÔؾùºâÆ÷£¬Èç¹û·¢ÏÖÓлº´æÐÅÏ¢£¬Ö±½Ó·µ»Ø¸øÓû§¡£
¡¡¡¡Èç¹ûûÓз¢ÏÖ»º´æÐÅÏ¢£¬Nginx »ØÔ´µ½Ó¦Ó÷þÎñÆ÷»ñÈ¡ÐÅÏ¢¡£
¡¡¡¡ÁíÍ⣬ÓÐÒ»¸ö»º´æ¸üзþÎñ£¬¶¨ÆÚ°ÑÓ¦Ó÷þÎñÆ÷ÖÐÏà¶ÔÎȶ¨µÄÐÅÏ¢¸üе½ Nginx ±¾µØ»º´æÖС£
¡¡¡¡NginxÉèÖûº´æÓÐÁ½ÖÖ·½Ê½£º
¡¡¡¡- proxy_cache_pathºÍproxy_cache
¡¡¡¡- Cache-ControlºÍPragma
¡¡¡¡¶ÔÓÚÕ¾µãÖв»¾³£Ð޸ĵľ²Ì¬ÄÚÈÝ(ÈçͼƬ£¬JS£¬CSS)£¬¿ÉÒÔÔÚ·þÎñÆ÷ÖÐÉèÖÃexpires¹ýÆÚʱ¼ä£¬¿ØÖÆä¯ÀÀÆ÷»º´æ£¬´ïµ½ÓÐЧ¼õС´ø¿íÁ÷Á¿£¬½µµÍ·þÎñÆ÷ѹÁ¦µÄÄ¿µÄ¡£
<img src="images/image-20220718224542963.png" alt="image-20220718224542963" style="zoom: 67%;" />
¡¡¡¡µÚÒ»²½£º¿Í»§¶ËµÚÒ»´ÎÏòNginxÇëÇóÊý¾ÝA;
¡¡¡¡µÚ¶þ²½£ºµ±Nginx·¢ÏÖ»º´æÖÐûÓÐÊý¾ÝAʱ£¬»áÏò·þÎñ¶ËÇëÇóÊý¾ÝA;
¡¡¡¡µÚÈý²½£º·þÎñ¶Ë½ÓÊÕµ½Nginx·¢À´µÄÇëÇó£¬Ôò·µ»ØÊý¾ÝAµ½Nginx£¬²¢ÇÒ»º´æÔÚNginx;
¡¡¡¡µÚËIJ½£ºNginx·µ»ØÊý¾ÝA¸ø¿Í»§¶ËÓ¦ÓÃ;
¡¡¡¡µÚÎå²½£º¿Í»§¶ËµÚ¶þ´ÎÏòNginxÇëÇóÊý¾ÝA;
¡¡¡¡µÚÁù²½£ºµ±Nginx·¢ÏÖ»º´æÖдæÔÚÊý¾ÝAʱ£¬Ôò²»»áÇëÇó·þÎñ¶Ë;
¡¡¡¡µÚÆß²½£ºNginx°Ñ»º´æÖеÄÊý¾ÝA·µ»Ø¸ø¿Í»§¶ËÓ¦Óá£
¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬NGINX×ðÖØCache-ControlÔ´·þÎñÆ÷µÄ±êÍ·¡£Ëü²»»º´æÏìÓ¦Cache-ControlÉèÖÃΪPrivate£¬No-Cache»òNo-Store»òSet-CookieÔÚÏìӦͷ¡£NGINXÖ»»º´æGETºÍHEAD¿Í»§¶ËÇëÇó¡£
¡¡¡¡ÈçÏÂÅäÖÿɸ²¸ÇÕâЩĬÈÏÖµ£º
¡¡¡¡- proxy_bufferingĬÈÏΪon£¬Èôproxy_bufferingÉèÖÃΪoff£¬ÔòNGINX²»»á»º´æÏìÓ¦¡£
¡¡¡¡- proxy_ignore_headers¿ÉÒÔÅäÖúöÂÔCache-Control£º
location /images/ {
proxy_cache my_cache;
proxy_ignore_headers Cache-Control;
proxy_cache_valid any 30m;
# ...
}
¡¡¡¡5. ½ø³Ì»º´æ
¡¡¡¡Í¨¹ýÁ˿ͻ§¶Ë£¬CDN£¬Nginx´úÀí»º´æ£¬ÎÒÃÇÖÕÓÚÀ´µ½ÁËÓ¦Ó÷þÎñÆ÷¡£Ó¦Ó÷þÎñÆ÷Éϲ¿Êð×ÅÒ»¸ö¸öÓ¦Óã¬ÕâЩӦÓÃÒÔ½ø³ÌµÄ·½Ê½ÔËÐÐ×Å£¬ÄÇôÔÚ½ø³ÌÖеĻº´æÊÇÔõÑùµÄÄØ?
¡¡¡¡½ø³ÌÄÚ»º´æÓÖ½ÐÍйܶѻº´æ£¬ÒÔ Java ΪÀý£¬Õⲿ·Ö»º´æ·ÅÔÚ JVM µÄÍйܶÑÉÏÃæ£¬Í¬Ê±»áÊܵ½ÍйܶѻØÊÕËã·¨µÄÓ°Ïì¡£
¡¡¡¡ÓÉÓÚÆäÔËÐÐÔÚÄÚ´æÖУ¬¶ÔÊý¾ÝµÄÏìÓ¦ËٶȺܿ죬ͨ³£ÎÒÃÇ»á°ÑÈȵãÊý¾Ý·ÅÔÚÕâÀï¡£
¡¡¡¡ÔÚ½ø³ÌÄÚ»º´æÃ»ÓÐÃüÖеÄʱºò£¬ÎÒÃÇ»áÈ¥ËÑË÷½ø³ÌÍâµÄ»º´æ»òÕß·Ö²¼Ê½»º´æ¡£ÕâÖÖ»º´æµÄºÃ´¦ÊÇûÓÐÐòÁл¯ºÍ·´ÐòÁл¯£¬ÊÇ×î¿ìµÄ»º´æ¡£È±µãÊÇ»º´æµÄ¿Õ¼ä²»ÄÜÌ«´ó£¬¶ÔÀ¬»ø»ØÊÕÆ÷µÄÐÔÄÜÓÐÓ°Ïì¡£
¡¡¡¡Ä¿Ç°±È½ÏÁ÷ÐеÄʵÏÖÓÐ Ehcache¡¢GuavaCache¡¢Caffeine¡£ÕâЩ¼Ü¹¹¿ÉÒԺܷ½±ãµÄ°ÑһЩÈȵãÊý¾Ý·Åµ½½ø³ÌÄڵĻº´æÖС£
¡¡¡¡ÕâÀïÎÒÃÇÐèÒª¹Ø×¢¼¸¸ö»º´æµÄ»ØÊÕ²ßÂÔ£¬¾ßÌåµÄʵÏּܹ¹µÄ»ØÊÕ²ßÂÔ»áÓÐËù²»Í¬£¬µ«´óÖµÄ˼·¶¼ÊÇÒ»Öµģº
¡¡¡¡- FIFO(First In First Out)£ºÏȽøÏȳöËã·¨£¬×îÏÈ·ÅÈ뻺´æµÄÊý¾Ý×îÏȱ»ÒƳý¡£
¡¡¡¡- LRU(Least Recently Used)£º×î½ü×îÉÙʹÓÃËã·¨£¬°Ñ×î¾ÃûÓÐʹÓùýµÄÊý¾ÝÒÆ³ý»º´æ¡£
¡¡¡¡- LFU(Least Frequently Used)£º×î²»³£ÓÃËã·¨£¬ÔÚÒ»¶Îʱ¼äÄÚʹÓÃÆµÂÊ×îСµÄÊý¾Ý±»ÒƳý»º´æ¡£
¡¡¡¡ÔÚ·Ö²¼Ê½¼Ü¹¹µÄ½ñÌ죬¶àÓ¦ÓÃÖÐÈç¹û²ÉÓýø³ÌÄÚ»º´æ»á´æÔÚÊý¾ÝÒ»ÖÂÐÔµÄÎÊÌâ¡£
¡¡¡¡ÕâÀïÍÆ¼öÁ½¸ö·½°¸£º
¡¡¡¡- ÏûÏ¢¶ÓÁз½°¸
¡¡¡¡Ó¦ÓÃÔÚÐÞ¸ÄÍê×ÔÉí»º´æÊý¾ÝºÍÊý¾Ý¿âÊý¾ÝÖ®ºó£¬¸øÏûÏ¢¶ÓÁз¢ËÍÊý¾Ý±ä»¯Í¨Öª£¬ÆäËûÓ¦Óö©ÔÄÁËÏûϢ֪ͨ£¬ÔÚÊÕµ½Í¨ÖªµÄʱºòÐ޸Ļº´æÊý¾Ý¡£
¡¡¡¡- ¶¨Ê±ÈÎÎñÐ޸ķ½°¸
¡¡¡¡ÎªÁ˱ÜÃâñîºÏ£¬½µµÍ¸´ÔÓÐÔ£¬¶Ô“ʵʱһÖÂÐÔ”²»Ãô¸ÐµÄÇé¿öÏ¡£Ã¿¸öÓ¦Óö¼»áÆô¶¯Ò»¸ö¶¨Ê±ÈÎÎñ£¬¶¨Ê±´ÓÊý¾Ý¿âÀÈ¡×îеÄÊý¾Ý£¬¸üлº´æ¡£
¡¡¡¡½ø³ÌÄÚ»º´æÓÐÄÄЩʹÓó¡¾°ÄØ?
¡¡¡¡- ³¡¾°Ò»£ºÖ»¶ÁÊý¾Ý£¬¿ÉÒÔ¿¼ÂÇÔÚ½ø³ÌÆô¶¯Ê±¼ÓÔØµ½ÄÚ´æ¡£µ±È»£¬°ÑÊý¾Ý¼ÓÔØµ½ÀàËÆ Redis ÕâÑùµÄ½ø³ÌÍ⻺´æ·þÎñÒ²Äܽâ¾öÕâÀàÎÊÌâ¡£
¡¡¡¡- ³¡¾°¶þ£º¸ß²¢·¢£¬¿ÉÒÔ¿¼ÂÇʹÓýø³ÌÄÚ»º´æ£¬ÀýÈ磺Ãëɱ¡£
¡¡¡¡6. ·Ö²¼Ê½»º´æ
¡¡¡¡ËµÍê½ø³ÌÄÚ»º´æ£¬×ÔÈ»¾Í¹ý¶Èµ½½ø³ÌÍ⻺´æÁË¡£
¡¡¡¡Óë½ø³ÌÄÚ»º´æ²»Í¬£¬½ø³ÌÍ⻺´æÔÚÓ¦ÓÃÔËÐеĽø³ÌÖ®Í⣬ËüÓµÓиü´óµÄ»º´æÈÝÁ¿£¬²¢ÇÒ¿ÉÒÔ²¿Êðµ½²»Í¬µÄÎïÀí½Úµã£¬Í¨³£»áÓ÷ֲ¼Ê½»º´æµÄ·½Ê½ÊµÏÖ¡£
¡¡¡¡·Ö²¼Ê½»º´æÊÇÓëÓ¦Ó÷ÖÀëµÄ»º´æ·þÎñ£¬×î´óµÄÌØµãÊÇ£¬×ÔÉíÊÇÒ»¸ö¶ÀÁ¢µÄÓ¦ÓÃ/·þÎñ£¬Óë±¾µØÓ¦ÓøôÀ룬¶à¸öÓ¦ÓÿÉÖ±½Ó¹²ÏíÒ»¸ö»òÕß¶à¸ö»º´æÓ¦ÓÃ/·þÎñ¡£
¡¡¡¡ÎªÁËÌá¸ß»º´æµÄ¿ÉÓÃÐÔ£¬»áÔÚÔÓеĻº´æ½ÚµãÉϼÓÈë Master/Slave µÄÉè¼Æ¡£µ±»º´æÊý¾ÝдÈë Master ½ÚµãµÄʱºò£¬»áͬʱͬ²½Ò»·Ýµ½ Slave ½Úµã¡£
¡¡¡¡Ò»µ© Master ½ÚµãʧЧ£¬¿ÉÒÔͨ¹ý´úÀíÖ±½ÓÇл»µ½ Slave ½Úµã£¬Õâʱ Slave ½Úµã¾Í±ä³ÉÁË Master ½Úµã£¬±£Ö¤»º´æµÄÕý³£¹¤×÷¡£
¡¡¡¡Ã¿¸ö»º´æ½Úµã»¹»áÌṩ»º´æ¹ýÆÚµÄ»úÖÆ£¬²¢ÇÒ»á°Ñ»º´æÄÚÈݶ¨ÆÚÒÔ¿ìÕյķ½Ê½±£´æµ½ÎļþÉÏ£¬·½±ã»º´æ±ÀÀ£Ö®ºóÆô¶¯Ô¤ÈȼÓÔØ¡£
¡¡¡¡6.1 »º´æÑ©±À
¡¡¡¡µ±»º´æÊ§Ð§£¬»º´æ¹ýÆÚ±»Çå³ý£¬»º´æ¸üеÄʱºò¡£ÇëÇóÊÇÎÞ·¨ÃüÖлº´æµÄ£¬Õâ¸öʱºòÇëÇó»áÖ±½Ó»ØÔ´µ½Êý¾Ý¿â¡£
¡¡¡¡Èç¹ûÉÏÊöÇé¿öƵ·±·¢Éú»òÕßͬʱ·¢ÉúµÄʱºò£¬¾Í»áÔì³É´óÃæ»ýµÄÇëÇóÖ±½Óµ½Êý¾Ý¿â£¬Ôì³ÉÊý¾Ý¿â·ÃÎÊÆ¿¾±¡£ÎÒÃdzÆÕâÖÖÇé¿öΪ»º´æÑ©±À¡£
¡¡¡¡´ÓÈçÏÂÁ½·½ÃæÀ´Ë¼¿¼½â¾ö·½°¸£º
¡¡¡¡»º´æ·½Ã棺
¡¡¡¡- ±ÜÃ⻺´æÍ¬Ê±Ê§Ð§£¬²»Í¬µÄ key ÉèÖò»Í¬µÄ³¬Ê±Ê±¼ä¡£
¡¡¡¡- Ôö¼Ó»¥³âËø£¬¶Ô»º´æµÄ¸üвÙ×÷½øÐмÓËø±£»¤£¬±£Ö¤Ö»ÓÐÒ»¸öÏ߳̽øÐлº´æ¸üС£»º´æÒ»µ©Ê§Ð§¿ÉÒÔͨ¹ý»º´æ¿ìÕյķ½Ê½Ñ¸ËÙÖØ½¨»º´æ¡£¶Ô»º´æ½ÚµãÔö¼ÓÖ÷±¸»úÖÆ£¬µ±Ö÷»º´æÊ§Ð§ÒÔºóÇл»µ½±¸Óûº´æ¼ÌÐø¹¤×÷¡£
¡¡¡¡Éè¼Æ·½Ã棬ÕâÀï¸ø³öÁ˼¸µã½¨Ò鹩´ó¼Ò²Î¿¼£º
¡¡¡¡- ÈÛ¶Ï»úÖÆ£ºÄ³¸ö»º´æ½Úµã²»Äܹ¤×÷µÄʱºò£¬ÐèҪ֪ͨ»º´æ´úÀí²»Òª°ÑÇëÇó·Óɵ½¸Ã½Úµã£¬¼õÉÙÓû§µÈ´ýºÍÇëÇóʱ³¤¡£
¡¡¡¡- ÏÞÁ÷»úÖÆ£ºÔÚ½ÓÈë²ãºÍ´úÀí²ã¿ÉÒÔ×öÏÞÁ÷£¬µ±»º´æ·þÎñÎÞ·¨Ö§³Ö¸ß²¢·¢µÄʱºò£¬Ç°¶Ë¿ÉÒÔ°ÑÎÞ·¨ÏìÓ¦µÄÇëÇó·ÅÈëµ½¶ÓÁлòÕß¶ªÆú¡£
¡¡¡¡- ¸ôÀë»úÖÆ£º»º´æÎÞ·¨Ìṩ·þÎñ»òÕßÕýÔÚÔ¤ÈÈÖØ½¨µÄʱºò£¬°Ñ¸ÃÇëÇó·ÅÈë¶ÓÁÐÖУ¬ÕâÑù¸ÃÇëÇóÒòΪ±»¸ôÀë¾Í²»»á±»Â·Óɵ½ÆäËûµÄ»º´æ½Úµã¡£
¡¡¡¡- Èç´Ë¾Í²»»áÒòΪÕâ¸ö½ÚµãµÄÎÊÌâÓ°Ïìµ½ÆäËû½Úµã¡£µ±»º´æÖؽ¨ÒÔºó£¬ÔÙ´Ó¶ÓÁÐÖÐÈ¡³öÇëÇóÒÀ´Î´¦Àí¡£
¡¡¡¡62. »º´æ´©Í¸
¡¡¡¡»º´æÒ»°ãÊÇ Key£¬Value ·½Ê½´æÔÚ£¬Ò»¸ö Key ¶ÔÓ¦µÄ Value ²»´æÔÚʱ£¬ÇëÇó»á»ØÔ´µ½Êý¾Ý¿â¡£
¡¡¡¡¼ÙÈç¶ÔÓ¦µÄ Value Ò»Ö±²»´æÔÚ£¬Ôò»áƵ·±µÄÇëÇóÊý¾Ý¿â£¬¶ÔÊý¾Ý¿âÔì³É·ÃÎÊѹÁ¦¡£Èç¹ûÓÐÈËÀûÓÃÕâ¸ö©¶´¹¥»÷£¬¾ÍÂé·³ÁË¡£
¡¡¡¡½â¾ö·½·¨£ºÈç¹ûÒ»¸ö Key ¶ÔÓ¦µÄ Value ²éѯ·µ»ØÎª¿Õ£¬ÎÒÃÇÈÔÈ»°ÑÕâ¸ö¿Õ½á¹û»º´æÆðÀ´£¬Èç¹ûÕâ¸öֵûÓб仯Ï´βéѯ¾Í²»»áÇëÇóÊý¾Ý¿âÁË¡£
¡¡¡¡½«ËùÓпÉÄÜ´æÔÚµÄÊý¾Ý¹þÏ£µ½Ò»¸ö×ã¹»´óµÄ Bitmap ÖУ¬ÄÇô²»´æÔÚµÄÊý¾Ý»á±»Õâ¸ö Bitmap ¹ýÂËÆ÷À¹½Øµô£¬±ÜÃâ¶ÔÊý¾Ý¿âµÄ²éѯѹÁ¦¡£
¡¡¡¡6.3 »º´æ»÷´©
¡¡¡¡ÔÚÊý¾ÝÇëÇóµÄʱºò£¬Ä³Ò»¸ö»º´æ¸ÕºÃʧЧ»òÕßÕýÔÚдÈ뻺´æ£¬Í¬Ê±Õâ¸ö»º´æÊý¾Ý¿ÉÄÜ»áÔÚÕâ¸öʱ¼äµã±»³¬¸ß²¢·¢ÇëÇ󣬳ÉΪ“Èȵã”Êý¾Ý¡£
¡¡¡¡Õâ¾ÍÊÇ»º´æ»÷´©ÎÊÌ⣬Õâ¸öºÍ»º´æÑ©±ÀµÄÇø±ðÔÚÓÚ£¬ÕâÀïÊÇÕë¶Ôijһ¸ö»º´æ£¬Ç°ÕßÊÇÕë¶Ô¶à¸ö»º´æ¡£
¡¡¡¡½â¾ö·½°¸£ºµ¼ÖÂÎÊÌâµÄÔÒòÊÇÔÚͬһʱ¼ä¶Á/д»º´æ£¬ËùÒÔÖ»Óб£Ö¤Í¬Ò»Ê±¼äÖ»ÓÐÒ»¸öÏß³Ìд£¬Ð´Íê³ÉÒÔºó£¬ÆäËûµÄÇëÇóÔÙʹÓûº´æ¾Í¿ÉÒÔÁË¡£
¡¡¡¡±È½Ï³£ÓõÄ×ö·¨ÊÇʹÓà mutex(»¥³âËø)¡£ÔÚ»º´æÊ§Ð§µÄʱºò£¬²»ÊÇÁ¢¼´Ð´È뻺´æ£¬¶øÊÇÏÈÉèÖÃÒ»¸ö mutex(»¥³âËø)¡£µ±»º´æ±»Ð´ÈëÍê³ÉÒÔºó£¬ÔÙ·Å¿ªÕâ¸öËøÈÃÇëÇó½øÐзÃÎÊ¡£
±±¾©Ð£Çø