You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by gi...@apache.org on 2021/10/02 15:09:38 UTC

[apisix-website] branch asf-site updated: deploy: 1aa7e0bc2ff8a5cfee28a5cb068e03d70b278cb3

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/apisix-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new f71e0bb  deploy: 1aa7e0bc2ff8a5cfee28a5cb068e03d70b278cb3
f71e0bb is described below

commit f71e0bbacc9ff5705cd4f97753dae076eec1c5b4
Author: juzhiyuan <ju...@users.noreply.github.com>
AuthorDate: Sat Oct 2 15:09:25 2021 +0000

    deploy: 1aa7e0bc2ff8a5cfee28a5cb068e03d70b278cb3
---
 404.html                                           |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |  12 +-
 .../Apache-APISIX-Incubator-Journey/index.html     |   8 +-
 .../Apache-APISIX-Kubernetes-Ingress/index.html    |   8 +-
 .../Apache-APISIX-in-China-Mobile-Cloud/index.html |  12 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../Speed-Limiting-With-Apache-APISIX/index.html   |   8 +-
 .../index.html                                     |   8 +-
 articles/The-Appeal-of-OpenSource/index.html       |   8 +-
 articles/The-Evolution-of-Apache-APISIX/index.html |   8 +-
 .../index.html                                     |   8 +-
 articles/archive/index.html                        |   8 +-
 articles/atom.xml                                  |   6 +-
 articles/index.html                                |  10 +-
 articles/page/2/index.html                         |   8 +-
 articles/rss.xml                                   |   6 +-
 ...21-01-11-1-5f0a8ba803904c529c9882ac38110a58.png | Bin 282192 -> 0 bytes
 ...21-05-25-1-e5fd919396575483d03c1ed9835aeaad.png | Bin 596337 -> 0 bytes
 ...1-06-17-1-5fcdb8fc28b061fc73281b2211fd3355.jpeg | Bin 87511 -> 0 bytes
 ...21-06-18-1-08117c13bd9e23fdd5f7aad2ee758b43.png | Bin 296877 -> 0 bytes
 ...21-06-21-1-525ff9910f08736d1e3777a630df9ae3.png | Bin 803139 -> 0 bytes
 ...21-06-21-2-c01289c552c1b22596213a57c003252d.png | Bin 185212 -> 0 bytes
 ...21-06-23-1-464e37bbed3bfc62a3ec8b829aedc0ac.png | Bin 64921 -> 0 bytes
 ...21-06-23-2-8c8f5e2605bbbde14a339f033f363863.png | Bin 59614 -> 0 bytes
 ...21-06-23-3-d82a13dc1fecf2ebddadb1bb4fa3c658.png | Bin 89741 -> 0 bytes
 ...21-06-23-4-bf87a94d1e9e2710e5885cda0c42d645.png | Bin 219194 -> 0 bytes
 ...21-06-23-5-51233b6894dbddd176fc3cd01e954515.png | Bin 75989 -> 0 bytes
 ...21-06-23-6-e08db568c250b853753a3da854f2a3c1.png | Bin 131994 -> 0 bytes
 ...21-06-23-7-450539fbcab686512fc09887d251a000.png | Bin 117136 -> 0 bytes
 ...21-06-23-8-095c10c6a12044fb87a99c2493cfe249.png | Bin 64843 -> 0 bytes
 ...21-06-30-1-6eae65298ae03e3aafbcafffa6464321.png | Bin 222248 -> 0 bytes
 ...21-06-30-2-4b6100e6ec8760dbc1d75da8fe87f8af.png | Bin 199227 -> 0 bytes
 ...21-07-25-1-5cde3bee1ea10520982c9696d09920e1.png | Bin 229238 -> 0 bytes
 ...21-07-25-2-49469bc00b2dd5b0821c3bf6b9ed71e1.png | Bin 4240937 -> 0 bytes
 ...21-07-25-3-b442aaa642977316ebabaa0559a90ed2.png | Bin 431675 -> 0 bytes
 ...21-07-25-4-f0d948d4f1db411aa7c1c66ea94fb39f.png | Bin 2283307 -> 0 bytes
 ...21-07-25-5-1fe1e63995880d281cf60c024f58ec2d.png | Bin 1019133 -> 0 bytes
 ...21-07-25-6-c6fead006de2ce858d4b5457d553e746.png | Bin 1002085 -> 0 bytes
 ...21-07-25-7-84bded6c7e52d281de1fb6da07e9b111.png | Bin 927100 -> 0 bytes
 ...21-07-25-8-a1ddddd4fe2ed281726b5439cbb7d217.png | Bin 1076105 -> 0 bytes
 ...21-07-25-9-fde6febe331ceee5198411e503e2a266.png | Bin 571016 -> 0 bytes
 ...21-07-27-2-fcd83b17de4a21f12043b02f6a0debcd.png | Bin 30638 -> 0 bytes
 ...21-07-27-3-bac910a792a8fc4786c8fee933ab13dd.png | Bin 13029 -> 0 bytes
 ...21-07-27-4-27c896b48b4243bbcb6b015a638b7c07.png | Bin 565370 -> 0 bytes
 ...21-07-27-5-2146ab6cc8d4836f2981e57cbd607be7.png | Bin 124996 -> 0 bytes
 ...21-07-27-6-0626023112966dbfaf21aac70dcf068f.png | Bin 113655 -> 0 bytes
 ...21-07-27-7-0220ebe10f8083f7eb61da53e63fca5d.png | Bin 118011 -> 0 bytes
 ...henyanshan-0952e0c8779715d7f5952371cd3a343d.png | Bin 1883898 -> 0 bytes
 ...1-08-11-1-deac99af23c064e1f970d6f31d16d624.webp | Bin 39936 -> 0 bytes
 ...1-08-11-2-e0dc6b70588033c25005231a21fad8d3.webp | Bin 30144 -> 0 bytes
 ...21-08-18-1-5ecf309fec322291ce40b4fae7424acc.png | Bin 315273 -> 0 bytes
 ...21-08-19-1-9a4a6a926b5d773847dc7568216cc68a.png | Bin 514166 -> 0 bytes
 ...21-08-21-1-65fe923c11d59bd9a968dc35f1b9cb97.jpg | Bin 1092771 -> 0 bytes
 ...21-08-21-2-e9610756c89fec849caeb66361bce002.png | Bin 89698 -> 0 bytes
 ...21-08-21-3-a235acff5f9be2cb8cf8d6ac6c02b666.png | Bin 60870 -> 0 bytes
 ...21-08-21-4-17b564a2de6a1df403f0dbafd52f00e4.jpg | Bin 101110 -> 0 bytes
 ...21-09-06-1-309b019beba33f8b42cef1731324c711.png | Bin 516068 -> 0 bytes
 ...ssue_photo-09addbbcbea6116f36fdad097e6c6265.png | Bin 99984 -> 0 bytes
 assets/js/017e6c30.091dc8b7.js                     |   1 -
 assets/js/04f3873c.0e0a27a1.js                     |   1 +
 assets/js/04f3873c.3749a8a0.js                     |   1 -
 assets/js/08110f6c.0ad4c161.js                     |   1 +
 assets/js/08110f6c.b04dccda.js                     |   1 -
 assets/js/08ccb2cb.b533e107.js                     |   1 -
 assets/js/09b17eb5.39d9735c.js                     |   1 +
 assets/js/09b17eb5.78676515.js                     |   1 -
 assets/js/0a868c8c.a30d0dc3.js                     |   1 -
 assets/js/0e5dc264.1429d571.js                     |   1 -
 assets/js/11ce4159.c944b839.js                     |   1 -
 assets/js/11f7bf39.f0b3571b.js                     |   1 -
 assets/js/11fd55b2.4bf0dea1.js                     |   1 -
 assets/js/11fd55b2.c35a6c9d.js                     |   1 +
 assets/js/1264ab03.9491c82f.js                     |   1 +
 assets/js/1264ab03.f1ebdffd.js                     |   1 -
 assets/js/1984c093.3647fd99.js                     |   1 -
 assets/js/19945770.20a1e9fc.js                     |   1 +
 assets/js/19945770.b4b96dd7.js                     |   1 -
 assets/js/1a279caa.a5602772.js                     |   1 -
 assets/js/1a76dc05.dfbea53c.js                     |   1 -
 assets/js/1b8972ee.ff70dd31.js                     |   1 -
 assets/js/1ba65c75.af6b0175.js                     |   1 -
 assets/js/1c89ab3b.6d28fcf6.js                     |   1 -
 assets/js/1c89ab3b.a0547238.js                     |   1 +
 assets/js/1ccd5742.8f3a070c.js                     |   1 -
 assets/js/1fce243b.5e34d049.js                     |   1 +
 assets/js/1fce243b.d11f8da4.js                     |   1 -
 assets/js/20303563.330f3bfc.js                     |   1 -
 assets/js/220ca757.8ca119a3.js                     |   1 -
 assets/js/220ca757.8ea5ee4e.js                     |   1 +
 assets/js/25a150ef.bc74f16b.js                     |   1 -
 assets/js/2a264b2a.b866c3a2.js                     |   1 -
 assets/js/2a8cf3a9.09389d0e.js                     |   1 -
 assets/js/2bde796e.5159e7fd.js                     |   1 -
 assets/js/2d2b0f0c.058b1747.js                     |   1 -
 assets/js/2ed9567c.97c40718.js                     |   1 -
 assets/js/30c762b6.1b4cb409.js                     |   1 -
 assets/js/30c762b6.b01d4da7.js                     |   1 +
 assets/js/3240be29.a4a87538.js                     |   1 -
 assets/js/3393d167.35f85be3.js                     |   1 +
 assets/js/3393d167.8e34c102.js                     |   1 -
 assets/js/33a6a7aa.6895618f.js                     |   1 -
 assets/js/33dee1de.0064d69a.js                     |   1 -
 assets/js/34107ac7.191d5e60.js                     |   1 -
 assets/js/358566b4.186f2b83.js                     |   1 -
 assets/js/358566b4.3cfdbd56.js                     |   1 +
 assets/js/385b1818.079ef634.js                     |   1 -
 assets/js/3b0adab2.133d6a47.js                     |   1 -
 assets/js/3ba63bfb.8d59d89c.js                     |   1 -
 assets/js/3da423b3.ed08f878.js                     |   1 -
 assets/js/3dc9f306.b7665b6d.js                     |   1 -
 assets/js/3dc9f306.ca888517.js                     |   1 +
 assets/js/3fc6ae28.2b7fb337.js                     |   1 -
 assets/js/40fb2fae.2397ce6c.js                     |   1 -
 assets/js/40fb2fae.53717e61.js                     |   1 +
 assets/js/428f5968.bdd65c5e.js                     |   1 -
 assets/js/433e9d41.77f7fb98.js                     |   1 -
 assets/js/449c9590.41a51da6.js                     |   1 -
 assets/js/44ac4dbb.14cfe635.js                     |   1 -
 assets/js/45ab1254.127742f0.js                     |   1 -
 assets/js/4c20006b.70ab0929.js                     |   1 +
 assets/js/4c20006b.7bda5cd0.js                     |   1 -
 assets/js/4e71f1c0.d6da6c0b.js                     |   1 -
 assets/js/4e71f1c0.e16a3d66.js                     |   1 +
 assets/js/4ed25eed.0543211e.js                     |   1 -
 assets/js/507e1a4c.2634da61.js                     |   1 -
 assets/js/507e1a4c.43a0ec51.js                     |   1 +
 assets/js/50f4d33e.22508a21.js                     |   1 -
 assets/js/50facf8e.3160ae51.js                     |   1 -
 assets/js/50facf8e.6c997f91.js                     |   1 +
 assets/js/514de2af.7281a14d.js                     |   1 +
 assets/js/514de2af.a413ac3c.js                     |   1 -
 assets/js/52099127.c3795d6e.js                     |   1 -
 assets/js/53b88444.1d9cd3ba.js                     |   1 -
 assets/js/53e90e00.1d721070.js                     |   1 -
 assets/js/542fd41f.05cf37df.js                     |   1 +
 assets/js/542fd41f.2e35fd07.js                     |   1 -
 assets/js/55207995.297dcddd.js                     |   1 -
 assets/js/55207995.50d96b04.js                     |   1 +
 assets/js/563a3008.c2f8c7ab.js                     |   1 -
 assets/js/56b4fd9f.5f1b7846.js                     |   1 -
 assets/js/56b4fd9f.b1da699b.js                     |   1 +
 assets/js/56ef7775.2b55e47b.js                     |   1 -
 assets/js/57218adb.e91fc048.js                     |   1 -
 assets/js/57f3a293.dab82a60.js                     |   1 -
 assets/js/5aca9bfb.26521364.js                     |   1 -
 assets/js/5aca9bfb.32e4f4da.js                     |   1 +
 assets/js/5b012f59.3c810e20.js                     |   1 -
 assets/js/5b79823b.4f834ab4.js                     |   1 -
 assets/js/5bb67ffc.8c5c7351.js                     |   1 -
 assets/js/601c6eaa.3f5ceaea.js                     |   1 +
 assets/js/601c6eaa.711d608e.js                     |   1 -
 assets/js/60509377.070d8cb4.js                     |   1 -
 assets/js/60509377.b6f31b65.js                     |   1 +
 assets/js/6073f1ae.cd783988.js                     |   1 -
 assets/js/60f19d40.2c5388b4.js                     |   1 -
 assets/js/6327eb3b.53af5389.js                     |   1 -
 assets/js/63751cfe.4d16fe27.js                     |   1 -
 assets/js/63751cfe.e49fce6c.js                     |   1 +
 assets/js/6433f4ff.aceb0639.js                     |   1 -
 assets/js/657aec7e.6228594e.js                     |   1 -
 assets/js/66fbb9c2.610e70d6.js                     |   1 +
 assets/js/66fbb9c2.e0a701e5.js                     |   1 -
 assets/js/67c20baf.1994d969.js                     |   1 -
 assets/js/68f3868d.e72d3f83.js                     |   1 -
 assets/js/6906be4c.43dca5f0.js                     |   1 -
 assets/js/69b09ea9.29da7d60.js                     |   1 +
 assets/js/69b09ea9.9b0b2012.js                     |   1 -
 assets/js/6d361364.ab0ca983.js                     |   1 -
 assets/js/6eaeadff.8ddca372.js                     |   1 -
 assets/js/6f550950.6f5b696b.js                     |   1 -
 assets/js/6ff59299.16f2be30.js                     |   1 -
 assets/js/6ff59299.c6013fb5.js                     |   1 +
 assets/js/710f644c.1c01727f.js                     |   1 -
 assets/js/714c5e81.6410300f.js                     |   1 +
 assets/js/714c5e81.73e377f9.js                     |   1 -
 assets/js/736b7d26.f3e03e2b.js                     |   1 -
 assets/js/74718473.ae7e7992.js                     |   1 -
 assets/js/749ed826.e641bdd3.js                     |   1 -
 assets/js/749ed826.f7191796.js                     |   1 +
 assets/js/74dddb32.70c57d88.js                     |   1 -
 assets/js/74dddb32.f2c72e2a.js                     |   1 +
 assets/js/7716d3b8.9aa6bbb1.js                     |   1 -
 assets/js/7af3052c.5ac6ab6c.js                     |   1 +
 assets/js/7af3052c.80421e79.js                     |   1 -
 assets/js/7d9726a8.0a7e8423.js                     |   1 -
 assets/js/7e6925b5.39ae939d.js                     |   1 -
 assets/js/80791de8.a6293cde.js                     |   1 +
 assets/js/80791de8.cb420caf.js                     |   1 -
 assets/js/814f3328.9f619e7d.js                     |   1 -
 assets/js/814f3328.d46a227b.js                     |   1 +
 assets/js/8159971e.e7081da7.js                     |   1 -
 assets/js/82a29d85.57d01420.js                     |   1 -
 assets/js/83d480e9.0737f244.js                     |   1 -
 assets/js/83d480e9.b498b0a8.js                     |   1 +
 assets/js/83edfd60.b9a8efee.js                     |   1 -
 assets/js/87452a79.594b2baf.js                     |   1 -
 assets/js/87452a79.877c2bcb.js                     |   1 +
 assets/js/89542356.009c37c6.js                     |   1 -
 assets/js/8b5124ac.d5e6bfc7.js                     |   1 -
 assets/js/8ca3d5dc.9373e0c9.js                     |   1 -
 assets/js/8e784bf3.910bfa7a.js                     |   1 -
 assets/js/8e784bf3.c8b927bb.js                     |   1 +
 assets/js/8eb4e46b.d7447dbe.js                     |   1 -
 assets/js/8eb4e46b.e1cac404.js                     |   1 +
 assets/js/8f147d6b.60514646.js                     |   1 -
 assets/js/8f700fa6.9956e38c.js                     |   1 +
 assets/js/8f700fa6.c8ce8b90.js                     |   1 -
 assets/js/90fc8a94.2020593b.js                     |   1 -
 assets/js/90fc8a94.918ae6f7.js                     |   1 +
 assets/js/919ddc63.086e237b.js                     |   1 +
 assets/js/919ddc63.c435c8a2.js                     |   1 -
 assets/js/92999a1c.7e2ea4cf.js                     |   1 -
 assets/js/941960b1.1a261a8b.js                     |   1 -
 assets/js/941960b1.f4d18763.js                     |   1 +
 assets/js/96e57280.f88bbd71.js                     |   1 -
 assets/js/98b657d8.0d4b4f2a.js                     |   1 -
 assets/js/9ce0cdd0.4a6de088.js                     |   1 -
 assets/js/9ce0cdd0.8db4bf21.js                     |   1 +
 assets/js/9e1badc6.7e02849b.js                     |   1 -
 assets/js/a06dfdd3.4b3c76a3.js                     |   1 -
 assets/js/a06dfdd3.e2ee080a.js                     |   1 +
 assets/js/a0d74a5e.6a329989.js                     |   1 -
 assets/js/a3c1b03e.5a3ee32a.js                     |   1 -
 assets/js/a4a2cefa.37406c8f.js                     |   1 -
 assets/js/a7023ddc.1fb5d426.js                     |   1 +
 assets/js/a7023ddc.3de5cbe8.js                     |   1 -
 assets/js/adbb350b.691c36a0.js                     |   1 -
 assets/js/adbb350b.88a7ba7e.js                     |   1 +
 assets/js/b2413e78.e50c880a.js                     |   1 -
 assets/js/b2b675dd.26773632.js                     |   1 +
 assets/js/b2b675dd.6bf9c4c4.js                     |   1 -
 assets/js/b2f554cd.7ca25103.js                     |   1 +
 assets/js/b2f554cd.8026a524.js                     |   1 -
 assets/js/b4186f86.720dc3fc.js                     |   1 -
 assets/js/b46e4adf.a89b57a4.js                     |   1 -
 assets/js/b6a62f16.8d96ca22.js                     |   1 -
 assets/js/b6a62f16.f423795e.js                     |   1 +
 assets/js/b78a81d0.c9950167.js                     |   1 -
 assets/js/b7f1d279.6ab246b7.js                     |   1 -
 assets/js/b9dc0898.2f504a08.js                     |   1 +
 assets/js/b9dc0898.3febdede.js                     |   1 -
 assets/js/bb86d006.5ce0f8d6.js                     |   1 -
 assets/js/bb86d006.e68e83c0.js                     |   1 +
 assets/js/bcead195.9fd1ca83.js                     |   1 -
 assets/js/bef75d89.e1102893.js                     |   1 -
 assets/js/bf337c45.60d803fc.js                     |   1 -
 assets/js/bfb26af8.d55410f2.js                     |   1 +
 assets/js/bfb26af8.e3d165fd.js                     |   1 -
 assets/js/c38a7190.194f7e21.js                     |   1 -
 assets/js/c38a7190.93d5a9ae.js                     |   1 +
 assets/js/c416f2d2.51411d14.js                     |   1 -
 assets/js/c56f5e51.42ad542c.js                     |   1 -
 assets/js/c7553d68.c0ba69a7.js                     |   1 -
 assets/js/c9b449f4.cbb8b33e.js                     |   1 -
 assets/js/d00e343a.a4994461.js                     |   1 -
 assets/js/d18db9b0.7d0c5238.js                     |   1 +
 assets/js/d18db9b0.e8c40b18.js                     |   1 -
 assets/js/d6f03799.25dd1849.js                     |   1 -
 assets/js/d713a29e.dfa7a47b.js                     |   1 -
 assets/js/d842c49e.8a389057.js                     |   1 -
 assets/js/d8ddfb32.8ff41879.js                     |   1 -
 assets/js/d9f294ca.bd377cb8.js                     |   1 -
 assets/js/dc10aa7a.41637e30.js                     |   1 +
 assets/js/dc10aa7a.f83c9351.js                     |   1 -
 assets/js/dd48f954.b660af77.js                     |   1 -
 assets/js/dde0bf3a.2e56d86f.js                     |   1 -
 assets/js/df0f9deb.c58f5e67.js                     |   1 -
 assets/js/df72488e.9b0d88de.js                     |   1 -
 assets/js/e02da2c5.515d8913.js                     |   1 -
 assets/js/e02da2c5.ebe68fd8.js                     |   1 +
 assets/js/e056ceac.e39626e1.js                     |   1 -
 assets/js/e5cae35a.5b64792a.js                     |   1 +
 assets/js/e5cae35a.973b72cd.js                     |   1 -
 assets/js/e71302a4.dcef8dd5.js                     |   1 -
 assets/js/e94802f7.df78d240.js                     |   1 -
 assets/js/ea06f8b4.d78b0626.js                     |   1 -
 assets/js/eaa3fcd7.0207cfff.js                     |   1 -
 assets/js/eaf65b9e.c195ceb6.js                     |   1 -
 assets/js/f1020d56.fd3f1ed5.js                     |   1 -
 assets/js/f3a06a56.7d2fbee7.js                     |   1 -
 assets/js/f3a06a56.ec65d85e.js                     |   1 +
 assets/js/f4a80879.352a8962.js                     |   1 -
 assets/js/f60a5573.8cc895b3.js                     |   1 -
 assets/js/f773b7cd.bb199e47.js                     |   1 -
 assets/js/f92d4cb4.de3fa99b.js                     |   1 -
 assets/js/f96d8335.c6691c8b.js                     |   1 -
 assets/js/facb7e12.c51ff8ed.js                     |   1 -
 assets/js/fb587670.31bdb192.js                     |   1 -
 assets/js/fd01d923.c1ee56a0.js                     |   1 -
 assets/js/ff677376.45544723.js                     |   1 -
 assets/js/main.16bacc18.js                         |   2 -
 assets/js/main.df478bd3.js                         |   2 +
 .../js/main.df478bd3.js.LICENSE.txt                |   0
 assets/js/runtime~main.083e7f2c.js                 |   1 -
 assets/js/runtime~main.a082ee80.js                 |   1 +
 .../index.html                                     |  30 --
 .../index.html                                     |  12 +-
 .../index.html                                     |  28 --
 .../index.html                                     |  28 --
 .../21/run-ingress-apisix-on-amazon-eks/index.html |  12 +-
 .../index.html                                     |  10 +-
 .../index.html                                     |  10 +-
 .../index.html                                     |  10 +-
 blog/2021/05/24/Tencent-Games/index.html           |  34 --
 .../index.html"                                    |  29 --
 .../index.html                                     |  28 --
 blog/2021/06/06/apisix-two-years/index.html        |  28 --
 .../index.html                                     |  10 +-
 .../index.html                                     |  30 --
 .../index.html                                     |  28 --
 .../index.html                                     |  28 --
 .../index.html                                     |  28 --
 .../index.html                                     |  42 --
 .../index.html                                     |  29 --
 .../06/28/why-we-need-Apache-APISIX/index.html     |  28 --
 .../06/29/release-apache-apisix-2.7-en/index.html  |  10 +-
 .../06/29/release-apache-apisix-2.7/index.html     |  28 --
 .../etcd3-support-HTTP-access-perfectly/index.html |  28 --
 .../07/06/celebrate-200-contributors/index.html    |  12 +-
 .../index.html                                     |  28 --
 .../2021/07/21/Apache-APISIX-Kubernetes/index.html |  29 --
 blog/2021/07/25/apachecon-asia/index.html          |  28 --
 .../index.html                                     |  34 --
 .../07/28/release-apache-apisix-2.8-en/index.html  |  12 +-
 .../07/28/release-apache-apisix-2.8/index.html     |  28 --
 blog/2021/08/05/Kong-to-APISIX/index.html          |  36 --
 .../index.html                                     |  30 --
 .../Apache-APISIX-in-China-Mobile-Cloud/index.html |  28 --
 .../08/09/Apache-APISIX-in-Quliankeji/index.html   |  29 --
 blog/2021/08/10/apisix-nginx/index.html            |  45 --
 blog/2021/08/11/interview-TuZhengsong/index.html   |  28 --
 .../index.html                                     |  10 +-
 .../index.html                                     |  12 +-
 .../index.html                                     |  29 --
 .../index.html                                     |  12 +-
 blog/2021/08/17/interview-airwallex/index.html     |  28 --
 .../Auth-with-Casbin-in-Apache-APISIX/index.html   |  42 --
 .../08/19/go-makes-Apache-APISIX-better/index.html |  31 --
 blog/2021/08/19/weekly-report/index.html           |  45 --
 blog/2021/08/21/shanghai-meetup/index.html         |  28 --
 blog/2021/08/23/ApacheCon-Asia-2021/index.html     |  28 --
 blog/2021/08/23/weekly-report/index.html           |  39 --
 blog/2021/08/24/shanghai-meetup-recap/index.html   |  28 --
 .../Auth-with-Casbin-in-Apache-APISIX/index.html   |  12 +-
 .../index.html                                     |  32 --
 .../index.html                                     |  31 --
 .../08/27/release-apache-apisix-2.9-en/index.html  |  10 +-
 .../08/27/release-apache-apisix-2.9/index.html     |  28 --
 blog/2021/08/30/Ingress-Meeting/index.html         |  30 --
 blog/2021/08/30/weekly-report/index.html           |  28 --
 .../index.html"                                    |  29 --
 .../index.html                                     |  53 --
 blog/2021/09/07/how-to-use-apisix-auth/index.html  |  28 --
 blog/2021/09/07/iQIYI-usercase/index.html          |  28 --
 .../index.html                                     |  28 --
 .../09/13/china-mobile-cloud-usercase/index.html   |  29 --
 blog/2021/09/14/youzan/index.html                  |  28 --
 blog/2021/09/15/weekly-report/index.html           |  30 --
 blog/2021/09/16/tencent-cloud/index.html           |  28 --
 blog/2021/09/18/xiaodian-usercase/index.html       |  29 --
 blog/2021/09/24/youpaicloud-usercase/index.html    |  29 --
 blog/2021/09/28/WPS-usercase/index.html            |  29 --
 .../09/29/release-apache-apisix-2.10-en/index.html |  10 +-
 .../09/29/release-apache-apisix-2.10/index.html    |  10 +-
 blog/2021/09/30/weekly-report/index.html           |  10 +-
 blog/2021/10/01/openEuler/index.html               |  10 +-
 blog/archive/index.html                            |  10 +-
 blog/atom.xml                                      | 540 ---------------------
 blog/index.html                                    |  12 +-
 blog/page/2/index.html                             |  12 +-
 blog/page/3/index.html                             |  28 --
 blog/page/4/index.html                             |  28 --
 blog/page/5/index.html                             |  28 --
 blog/page/6/index.html                             |  28 --
 blog/page/7/index.html                             |  28 --
 blog/page/8/index.html                             |  28 --
 blog/rss.xml                                       | 371 --------------
 blog/tags/community/index.html                     |  12 +-
 blog/tags/events/index.html                        |  12 +-
 blog/tags/index.html                               |  10 +-
 blog/tags/interview/index.html                     |  28 --
 blog/tags/practical-case/index.html                |  14 +-
 blog/tags/release/index.html                       |  12 +-
 blog/tags/security/index.html                      |  12 +-
 blog/tags/technology/index.html                    |  12 +-
 blog/tags/user-case/index.html                     |  30 --
 docs/apisix/2.10.0/FAQ/index.html                  |   8 +-
 docs/apisix/2.10.0/IGNORE_DOC/index.html           |   8 +-
 docs/apisix/2.10.0/admin-api/index.html            |   8 +-
 .../2.10.0/architecture-design/apisix/index.html   |   8 +-
 .../2.10.0/architecture-design/consumer/index.html |   8 +-
 .../architecture-design/debug-mode/index.html      |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.10.0/architecture-design/plugin/index.html   |   8 +-
 .../2.10.0/architecture-design/route/index.html    |   8 +-
 .../2.10.0/architecture-design/router/index.html   |   8 +-
 .../2.10.0/architecture-design/script/index.html   |   8 +-
 .../2.10.0/architecture-design/service/index.html  |   8 +-
 .../2.10.0/architecture-design/upstream/index.html |   8 +-
 docs/apisix/2.10.0/aws/index.html                  |   8 +-
 docs/apisix/2.10.0/batch-processor/index.html      |   8 +-
 docs/apisix/2.10.0/benchmark/index.html            |   8 +-
 docs/apisix/2.10.0/certificate/index.html          |   8 +-
 docs/apisix/2.10.0/control-api/index.html          |   8 +-
 .../customize-nginx-configuration/index.html       |   8 +-
 docs/apisix/2.10.0/debug-function/index.html       |   8 +-
 docs/apisix/2.10.0/discovery/consul_kv/index.html  |   8 +-
 docs/apisix/2.10.0/discovery/dns/index.html        |   8 +-
 docs/apisix/2.10.0/discovery/eureka/index.html     |   8 +-
 docs/apisix/2.10.0/discovery/index.html            |   8 +-
 docs/apisix/2.10.0/discovery/nacos/index.html      |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.10.0/external-plugin/index.html      |   8 +-
 docs/apisix/2.10.0/getting-started/index.html      |   8 +-
 docs/apisix/2.10.0/grpc-proxy/index.html           |   8 +-
 docs/apisix/2.10.0/health-check/index.html         |   8 +-
 docs/apisix/2.10.0/how-to-build/index.html         |   8 +-
 docs/apisix/2.10.0/install-dependencies/index.html |   8 +-
 .../2.10.0/internal/testing-framework/index.html   |   8 +-
 docs/apisix/2.10.0/mtls/index.html                 |   8 +-
 docs/apisix/2.10.0/plugin-develop/index.html       |   8 +-
 docs/apisix/2.10.0/plugin-interceptors/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/api-breaker/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/authz-casbin/index.html |   8 +-
 .../2.10.0/plugins/authz-keycloak/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/basic-auth/index.html   |   8 +-
 .../2.10.0/plugins/batch-requests/index.html       |   8 +-
 .../2.10.0/plugins/client-control/index.html       |   8 +-
 .../2.10.0/plugins/consumer-restriction/index.html |   8 +-
 docs/apisix/2.10.0/plugins/cors/index.html         |   8 +-
 docs/apisix/2.10.0/plugins/dubbo-proxy/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/echo/index.html         |   8 +-
 .../2.10.0/plugins/error-log-logger/index.html     |   8 +-
 .../2.10.0/plugins/ext-plugin-post-req/index.html  |   8 +-
 .../2.10.0/plugins/ext-plugin-pre-req/index.html   |   8 +-
 .../2.10.0/plugins/fault-injection/index.html      |   8 +-
 .../2.10.0/plugins/grpc-transcode/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/gzip/index.html         |   8 +-
 docs/apisix/2.10.0/plugins/hmac-auth/index.html    |   8 +-
 docs/apisix/2.10.0/plugins/http-logger/index.html  |   8 +-
 .../2.10.0/plugins/ip-restriction/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/jwt-auth/index.html     |   8 +-
 docs/apisix/2.10.0/plugins/kafka-logger/index.html |   8 +-
 docs/apisix/2.10.0/plugins/key-auth/index.html     |   8 +-
 docs/apisix/2.10.0/plugins/limit-conn/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/limit-count/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/limit-req/index.html    |   8 +-
 docs/apisix/2.10.0/plugins/log-rotate/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/mqtt-proxy/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/node-status/index.html  |   8 +-
 .../2.10.0/plugins/openid-connect/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/prometheus/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/proxy-cache/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.10.0/plugins/proxy-rewrite/index.html |   8 +-
 docs/apisix/2.10.0/plugins/real-ip/index.html      |   8 +-
 docs/apisix/2.10.0/plugins/redirect/index.html     |   8 +-
 .../2.10.0/plugins/referer-restriction/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/request-id/index.html   |   8 +-
 .../2.10.0/plugins/request-validation/index.html   |   8 +-
 .../2.10.0/plugins/response-rewrite/index.html     |   8 +-
 docs/apisix/2.10.0/plugins/server-info/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/serverless/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/skywalking/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/sls-logger/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/syslog/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.10.0/plugins/traffic-split/index.html |   8 +-
 .../2.10.0/plugins/ua-restriction/index.html       |   8 +-
 docs/apisix/2.10.0/plugins/udp-logger/index.html   |   8 +-
 docs/apisix/2.10.0/plugins/uri-blocker/index.html  |   8 +-
 docs/apisix/2.10.0/plugins/wolf-rbac/index.html    |   8 +-
 docs/apisix/2.10.0/plugins/zipkin/index.html       |   8 +-
 docs/apisix/2.10.0/profile/index.html              |   8 +-
 docs/apisix/2.10.0/router-radixtree/index.html     |   8 +-
 docs/apisix/2.10.0/stand-alone/index.html          |   8 +-
 docs/apisix/2.10.0/stream-proxy/index.html         |   8 +-
 docs/apisix/2.10.0/tags/index.html                 |   8 +-
 docs/apisix/2.4/FAQ/index.html                     |   8 +-
 docs/apisix/2.4/IGNORE_DOC/index.html              |   8 +-
 docs/apisix/2.4/admin-api/index.html               |   8 +-
 .../2.4/architecture-design/apisix/index.html      |   8 +-
 .../2.4/architecture-design/consumer/index.html    |   8 +-
 .../2.4/architecture-design/debug-mode/index.html  |   8 +-
 .../2.4/architecture-design/global-rule/index.html |   8 +-
 docs/apisix/2.4/architecture-design/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.4/architecture-design/plugin/index.html      |   8 +-
 .../2.4/architecture-design/route/index.html       |   8 +-
 .../2.4/architecture-design/router/index.html      |   8 +-
 .../2.4/architecture-design/script/index.html      |   8 +-
 .../2.4/architecture-design/service/index.html     |   8 +-
 .../2.4/architecture-design/upstream/index.html    |   8 +-
 docs/apisix/2.4/aws/index.html                     |   8 +-
 docs/apisix/2.4/batch-processor/index.html         |   8 +-
 docs/apisix/2.4/benchmark/index.html               |   8 +-
 docs/apisix/2.4/certificate/index.html             |   8 +-
 docs/apisix/2.4/control-api/index.html             |   8 +-
 .../2.4/customize-nginx-configuration/index.html   |   8 +-
 docs/apisix/2.4/debug-function/index.html          |   8 +-
 docs/apisix/2.4/discovery/consul_kv/index.html     |   8 +-
 docs/apisix/2.4/discovery/dns/index.html           |   8 +-
 docs/apisix/2.4/discovery/eureka/index.html        |   8 +-
 docs/apisix/2.4/discovery/index.html               |   8 +-
 docs/apisix/2.4/discovery/nacos/index.html         |   8 +-
 docs/apisix/2.4/dns/index.html                     |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.4/external-plugin/index.html         |   8 +-
 docs/apisix/2.4/getting-started/index.html         |   8 +-
 docs/apisix/2.4/grpc-proxy/index.html              |   8 +-
 docs/apisix/2.4/health-check/index.html            |   8 +-
 docs/apisix/2.4/how-to-build/index.html            |   8 +-
 docs/apisix/2.4/https/index.html                   |   8 +-
 docs/apisix/2.4/install-dependencies/index.html    |   8 +-
 .../2.4/internal/testing-framework/index.html      |   8 +-
 docs/apisix/2.4/mtls/index.html                    |   8 +-
 docs/apisix/2.4/plugin-develop/index.html          |   8 +-
 docs/apisix/2.4/plugin-interceptors/index.html     |   8 +-
 docs/apisix/2.4/plugins/api-breaker/index.html     |   8 +-
 docs/apisix/2.4/plugins/authz-casbin/index.html    |   8 +-
 docs/apisix/2.4/plugins/authz-keycloak/index.html  |   8 +-
 docs/apisix/2.4/plugins/basic-auth/index.html      |   8 +-
 docs/apisix/2.4/plugins/batch-requests/index.html  |   8 +-
 docs/apisix/2.4/plugins/client-control/index.html  |   8 +-
 .../2.4/plugins/consumer-restriction/index.html    |   8 +-
 docs/apisix/2.4/plugins/cors/index.html            |   8 +-
 docs/apisix/2.4/plugins/dubbo-proxy/index.html     |   8 +-
 docs/apisix/2.4/plugins/echo/index.html            |   8 +-
 .../apisix/2.4/plugins/error-log-logger/index.html |   8 +-
 .../2.4/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.4/plugins/ext-plugin-pre-req/index.html      |   8 +-
 docs/apisix/2.4/plugins/fault-injection/index.html |   8 +-
 docs/apisix/2.4/plugins/grpc-transcode/index.html  |   8 +-
 docs/apisix/2.4/plugins/gzip/index.html            |   8 +-
 docs/apisix/2.4/plugins/hmac-auth/index.html       |   8 +-
 docs/apisix/2.4/plugins/http-logger/index.html     |   8 +-
 docs/apisix/2.4/plugins/index.html                 |   8 +-
 docs/apisix/2.4/plugins/ip-restriction/index.html  |   8 +-
 docs/apisix/2.4/plugins/jwt-auth/index.html        |   8 +-
 docs/apisix/2.4/plugins/kafka-logger/index.html    |   8 +-
 docs/apisix/2.4/plugins/key-auth/index.html        |   8 +-
 docs/apisix/2.4/plugins/limit-conn/index.html      |   8 +-
 docs/apisix/2.4/plugins/limit-count/index.html     |   8 +-
 docs/apisix/2.4/plugins/limit-req/index.html       |   8 +-
 docs/apisix/2.4/plugins/log-rotate/index.html      |   8 +-
 docs/apisix/2.4/plugins/mqtt-proxy/index.html      |   8 +-
 docs/apisix/2.4/plugins/node-status/index.html     |   8 +-
 docs/apisix/2.4/plugins/openid-connect/index.html  |   8 +-
 docs/apisix/2.4/plugins/prometheus/index.html      |   8 +-
 docs/apisix/2.4/plugins/proxy-cache/index.html     |   8 +-
 docs/apisix/2.4/plugins/proxy-mirror/index.html    |   8 +-
 docs/apisix/2.4/plugins/proxy-rewrite/index.html   |   8 +-
 docs/apisix/2.4/plugins/real-ip/index.html         |   8 +-
 docs/apisix/2.4/plugins/redirect/index.html        |   8 +-
 .../2.4/plugins/referer-restriction/index.html     |   8 +-
 docs/apisix/2.4/plugins/request-id/index.html      |   8 +-
 .../2.4/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.4/plugins/response-rewrite/index.html |   8 +-
 docs/apisix/2.4/plugins/server-info/index.html     |   8 +-
 docs/apisix/2.4/plugins/serverless/index.html      |   8 +-
 docs/apisix/2.4/plugins/skywalking/index.html      |   8 +-
 docs/apisix/2.4/plugins/sls-logger/index.html      |   8 +-
 docs/apisix/2.4/plugins/syslog/index.html          |   8 +-
 docs/apisix/2.4/plugins/tcp-logger/index.html      |   8 +-
 docs/apisix/2.4/plugins/traffic-split/index.html   |   8 +-
 docs/apisix/2.4/plugins/ua-restriction/index.html  |   8 +-
 docs/apisix/2.4/plugins/udp-logger/index.html      |   8 +-
 docs/apisix/2.4/plugins/uri-blocker/index.html     |   8 +-
 docs/apisix/2.4/plugins/wolf-rbac/index.html       |   8 +-
 docs/apisix/2.4/plugins/zipkin/index.html          |   8 +-
 docs/apisix/2.4/powered-by/index.html              |   8 +-
 docs/apisix/2.4/profile/index.html                 |   8 +-
 docs/apisix/2.4/router-radixtree/index.html        |   8 +-
 docs/apisix/2.4/stand-alone/index.html             |   8 +-
 docs/apisix/2.4/stream-proxy/index.html            |   8 +-
 docs/apisix/2.4/tags/index.html                    |   8 +-
 docs/apisix/2.5/FAQ/index.html                     |   8 +-
 docs/apisix/2.5/IGNORE_DOC/index.html              |   8 +-
 docs/apisix/2.5/admin-api/index.html               |   8 +-
 .../2.5/architecture-design/apisix/index.html      |   8 +-
 .../2.5/architecture-design/consumer/index.html    |   8 +-
 .../2.5/architecture-design/debug-mode/index.html  |   8 +-
 .../2.5/architecture-design/global-rule/index.html |   8 +-
 docs/apisix/2.5/architecture-design/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.5/architecture-design/plugin/index.html      |   8 +-
 .../2.5/architecture-design/route/index.html       |   8 +-
 .../2.5/architecture-design/router/index.html      |   8 +-
 .../2.5/architecture-design/script/index.html      |   8 +-
 .../2.5/architecture-design/service/index.html     |   8 +-
 .../2.5/architecture-design/upstream/index.html    |   8 +-
 docs/apisix/2.5/aws/index.html                     |   8 +-
 docs/apisix/2.5/batch-processor/index.html         |   8 +-
 docs/apisix/2.5/benchmark/index.html               |   8 +-
 docs/apisix/2.5/certificate/index.html             |   8 +-
 docs/apisix/2.5/control-api/index.html             |   8 +-
 .../2.5/customize-nginx-configuration/index.html   |   8 +-
 docs/apisix/2.5/debug-function/index.html          |   8 +-
 docs/apisix/2.5/discovery/consul_kv/index.html     |   8 +-
 docs/apisix/2.5/discovery/dns/index.html           |   8 +-
 docs/apisix/2.5/discovery/eureka/index.html        |   8 +-
 docs/apisix/2.5/discovery/index.html               |   8 +-
 docs/apisix/2.5/discovery/nacos/index.html         |   8 +-
 docs/apisix/2.5/dns/index.html                     |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.5/external-plugin/index.html         |   8 +-
 docs/apisix/2.5/getting-started/index.html         |   8 +-
 docs/apisix/2.5/grpc-proxy/index.html              |   8 +-
 docs/apisix/2.5/health-check/index.html            |   8 +-
 docs/apisix/2.5/how-to-build/index.html            |   8 +-
 docs/apisix/2.5/https/index.html                   |   8 +-
 docs/apisix/2.5/install-dependencies/index.html    |   8 +-
 .../2.5/internal/testing-framework/index.html      |   8 +-
 docs/apisix/2.5/mtls/index.html                    |   8 +-
 docs/apisix/2.5/plugin-develop/index.html          |   8 +-
 docs/apisix/2.5/plugin-interceptors/index.html     |   8 +-
 docs/apisix/2.5/plugins/api-breaker/index.html     |   8 +-
 docs/apisix/2.5/plugins/authz-casbin/index.html    |   8 +-
 docs/apisix/2.5/plugins/authz-keycloak/index.html  |   8 +-
 docs/apisix/2.5/plugins/basic-auth/index.html      |   8 +-
 docs/apisix/2.5/plugins/batch-requests/index.html  |   8 +-
 docs/apisix/2.5/plugins/client-control/index.html  |   8 +-
 .../2.5/plugins/consumer-restriction/index.html    |   8 +-
 docs/apisix/2.5/plugins/cors/index.html            |   8 +-
 docs/apisix/2.5/plugins/dubbo-proxy/index.html     |   8 +-
 docs/apisix/2.5/plugins/echo/index.html            |   8 +-
 .../apisix/2.5/plugins/error-log-logger/index.html |   8 +-
 .../2.5/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.5/plugins/ext-plugin-pre-req/index.html      |   8 +-
 docs/apisix/2.5/plugins/fault-injection/index.html |   8 +-
 docs/apisix/2.5/plugins/grpc-transcode/index.html  |   8 +-
 docs/apisix/2.5/plugins/gzip/index.html            |   8 +-
 docs/apisix/2.5/plugins/hmac-auth/index.html       |   8 +-
 docs/apisix/2.5/plugins/http-logger/index.html     |   8 +-
 docs/apisix/2.5/plugins/index.html                 |   8 +-
 docs/apisix/2.5/plugins/ip-restriction/index.html  |   8 +-
 docs/apisix/2.5/plugins/jwt-auth/index.html        |   8 +-
 docs/apisix/2.5/plugins/kafka-logger/index.html    |   8 +-
 docs/apisix/2.5/plugins/key-auth/index.html        |   8 +-
 docs/apisix/2.5/plugins/limit-conn/index.html      |   8 +-
 docs/apisix/2.5/plugins/limit-count/index.html     |   8 +-
 docs/apisix/2.5/plugins/limit-req/index.html       |   8 +-
 docs/apisix/2.5/plugins/log-rotate/index.html      |   8 +-
 docs/apisix/2.5/plugins/mqtt-proxy/index.html      |   8 +-
 docs/apisix/2.5/plugins/node-status/index.html     |   8 +-
 docs/apisix/2.5/plugins/openid-connect/index.html  |   8 +-
 docs/apisix/2.5/plugins/prometheus/index.html      |   8 +-
 docs/apisix/2.5/plugins/proxy-cache/index.html     |   8 +-
 docs/apisix/2.5/plugins/proxy-mirror/index.html    |   8 +-
 docs/apisix/2.5/plugins/proxy-rewrite/index.html   |   8 +-
 docs/apisix/2.5/plugins/real-ip/index.html         |   8 +-
 docs/apisix/2.5/plugins/redirect/index.html        |   8 +-
 .../2.5/plugins/referer-restriction/index.html     |   8 +-
 docs/apisix/2.5/plugins/request-id/index.html      |   8 +-
 .../2.5/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.5/plugins/response-rewrite/index.html |   8 +-
 docs/apisix/2.5/plugins/server-info/index.html     |   8 +-
 docs/apisix/2.5/plugins/serverless/index.html      |   8 +-
 docs/apisix/2.5/plugins/skywalking/index.html      |   8 +-
 docs/apisix/2.5/plugins/sls-logger/index.html      |   8 +-
 docs/apisix/2.5/plugins/syslog/index.html          |   8 +-
 docs/apisix/2.5/plugins/tcp-logger/index.html      |   8 +-
 docs/apisix/2.5/plugins/traffic-split/index.html   |   8 +-
 docs/apisix/2.5/plugins/ua-restriction/index.html  |   8 +-
 docs/apisix/2.5/plugins/udp-logger/index.html      |   8 +-
 docs/apisix/2.5/plugins/uri-blocker/index.html     |   8 +-
 docs/apisix/2.5/plugins/wolf-rbac/index.html       |   8 +-
 docs/apisix/2.5/plugins/zipkin/index.html          |   8 +-
 docs/apisix/2.5/powered-by/index.html              |   8 +-
 docs/apisix/2.5/profile/index.html                 |   8 +-
 docs/apisix/2.5/router-radixtree/index.html        |   8 +-
 docs/apisix/2.5/stand-alone/index.html             |   8 +-
 docs/apisix/2.5/stream-proxy/index.html            |   8 +-
 docs/apisix/2.5/tags/index.html                    |   8 +-
 docs/apisix/2.6/FAQ/index.html                     |   8 +-
 docs/apisix/2.6/IGNORE_DOC/index.html              |   8 +-
 docs/apisix/2.6/admin-api/index.html               |   8 +-
 .../2.6/architecture-design/apisix/index.html      |   8 +-
 .../2.6/architecture-design/consumer/index.html    |   8 +-
 .../2.6/architecture-design/debug-mode/index.html  |   8 +-
 .../2.6/architecture-design/global-rule/index.html |   8 +-
 docs/apisix/2.6/architecture-design/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.6/architecture-design/plugin/index.html      |   8 +-
 .../2.6/architecture-design/route/index.html       |   8 +-
 .../2.6/architecture-design/router/index.html      |   8 +-
 .../2.6/architecture-design/script/index.html      |   8 +-
 .../2.6/architecture-design/service/index.html     |   8 +-
 .../2.6/architecture-design/upstream/index.html    |   8 +-
 docs/apisix/2.6/aws/index.html                     |   8 +-
 docs/apisix/2.6/batch-processor/index.html         |   8 +-
 docs/apisix/2.6/benchmark/index.html               |   8 +-
 docs/apisix/2.6/certificate/index.html             |   8 +-
 docs/apisix/2.6/control-api/index.html             |   8 +-
 .../2.6/customize-nginx-configuration/index.html   |   8 +-
 docs/apisix/2.6/debug-function/index.html          |   8 +-
 docs/apisix/2.6/discovery/consul_kv/index.html     |   8 +-
 docs/apisix/2.6/discovery/dns/index.html           |   8 +-
 docs/apisix/2.6/discovery/eureka/index.html        |   8 +-
 docs/apisix/2.6/discovery/index.html               |   8 +-
 docs/apisix/2.6/discovery/nacos/index.html         |   8 +-
 docs/apisix/2.6/dns/index.html                     |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.6/external-plugin/index.html         |   8 +-
 docs/apisix/2.6/getting-started/index.html         |   8 +-
 docs/apisix/2.6/grpc-proxy/index.html              |   8 +-
 docs/apisix/2.6/health-check/index.html            |   8 +-
 docs/apisix/2.6/how-to-build/index.html            |   8 +-
 docs/apisix/2.6/https/index.html                   |   8 +-
 docs/apisix/2.6/install-dependencies/index.html    |   8 +-
 .../2.6/internal/testing-framework/index.html      |   8 +-
 docs/apisix/2.6/mtls/index.html                    |   8 +-
 docs/apisix/2.6/plugin-develop/index.html          |   8 +-
 docs/apisix/2.6/plugin-interceptors/index.html     |   8 +-
 docs/apisix/2.6/plugins/api-breaker/index.html     |   8 +-
 docs/apisix/2.6/plugins/authz-casbin/index.html    |   8 +-
 docs/apisix/2.6/plugins/authz-keycloak/index.html  |   8 +-
 docs/apisix/2.6/plugins/basic-auth/index.html      |   8 +-
 docs/apisix/2.6/plugins/batch-requests/index.html  |   8 +-
 docs/apisix/2.6/plugins/client-control/index.html  |   8 +-
 .../2.6/plugins/consumer-restriction/index.html    |   8 +-
 docs/apisix/2.6/plugins/cors/index.html            |   8 +-
 docs/apisix/2.6/plugins/dubbo-proxy/index.html     |   8 +-
 docs/apisix/2.6/plugins/echo/index.html            |   8 +-
 .../apisix/2.6/plugins/error-log-logger/index.html |   8 +-
 .../2.6/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.6/plugins/ext-plugin-pre-req/index.html      |   8 +-
 docs/apisix/2.6/plugins/fault-injection/index.html |   8 +-
 docs/apisix/2.6/plugins/grpc-transcode/index.html  |   8 +-
 docs/apisix/2.6/plugins/gzip/index.html            |   8 +-
 docs/apisix/2.6/plugins/hmac-auth/index.html       |   8 +-
 docs/apisix/2.6/plugins/http-logger/index.html     |   8 +-
 docs/apisix/2.6/plugins/index.html                 |   8 +-
 docs/apisix/2.6/plugins/ip-restriction/index.html  |   8 +-
 docs/apisix/2.6/plugins/jwt-auth/index.html        |   8 +-
 docs/apisix/2.6/plugins/kafka-logger/index.html    |   8 +-
 docs/apisix/2.6/plugins/key-auth/index.html        |   8 +-
 docs/apisix/2.6/plugins/limit-conn/index.html      |   8 +-
 docs/apisix/2.6/plugins/limit-count/index.html     |   8 +-
 docs/apisix/2.6/plugins/limit-req/index.html       |   8 +-
 docs/apisix/2.6/plugins/log-rotate/index.html      |   8 +-
 docs/apisix/2.6/plugins/mqtt-proxy/index.html      |   8 +-
 docs/apisix/2.6/plugins/node-status/index.html     |   8 +-
 docs/apisix/2.6/plugins/openid-connect/index.html  |   8 +-
 docs/apisix/2.6/plugins/prometheus/index.html      |   8 +-
 docs/apisix/2.6/plugins/proxy-cache/index.html     |   8 +-
 docs/apisix/2.6/plugins/proxy-mirror/index.html    |   8 +-
 docs/apisix/2.6/plugins/proxy-rewrite/index.html   |   8 +-
 docs/apisix/2.6/plugins/real-ip/index.html         |   8 +-
 docs/apisix/2.6/plugins/redirect/index.html        |   8 +-
 .../2.6/plugins/referer-restriction/index.html     |   8 +-
 docs/apisix/2.6/plugins/request-id/index.html      |   8 +-
 .../2.6/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.6/plugins/response-rewrite/index.html |   8 +-
 docs/apisix/2.6/plugins/server-info/index.html     |   8 +-
 docs/apisix/2.6/plugins/serverless/index.html      |   8 +-
 docs/apisix/2.6/plugins/skywalking/index.html      |   8 +-
 docs/apisix/2.6/plugins/sls-logger/index.html      |   8 +-
 docs/apisix/2.6/plugins/syslog/index.html          |   8 +-
 docs/apisix/2.6/plugins/tcp-logger/index.html      |   8 +-
 docs/apisix/2.6/plugins/traffic-split/index.html   |   8 +-
 docs/apisix/2.6/plugins/ua-restriction/index.html  |   8 +-
 docs/apisix/2.6/plugins/udp-logger/index.html      |   8 +-
 docs/apisix/2.6/plugins/uri-blocker/index.html     |   8 +-
 docs/apisix/2.6/plugins/wolf-rbac/index.html       |   8 +-
 docs/apisix/2.6/plugins/zipkin/index.html          |   8 +-
 docs/apisix/2.6/powered-by/index.html              |   8 +-
 docs/apisix/2.6/profile/index.html                 |   8 +-
 docs/apisix/2.6/router-radixtree/index.html        |   8 +-
 docs/apisix/2.6/stand-alone/index.html             |   8 +-
 docs/apisix/2.6/stream-proxy/index.html            |   8 +-
 docs/apisix/2.6/tags/index.html                    |   8 +-
 docs/apisix/2.7/FAQ/index.html                     |   8 +-
 docs/apisix/2.7/IGNORE_DOC/index.html              |   8 +-
 docs/apisix/2.7/admin-api/index.html               |   8 +-
 .../2.7/architecture-design/apisix/index.html      |   8 +-
 .../2.7/architecture-design/consumer/index.html    |   8 +-
 .../2.7/architecture-design/debug-mode/index.html  |   8 +-
 .../2.7/architecture-design/global-rule/index.html |   8 +-
 docs/apisix/2.7/architecture-design/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.7/architecture-design/plugin/index.html      |   8 +-
 .../2.7/architecture-design/route/index.html       |   8 +-
 .../2.7/architecture-design/router/index.html      |   8 +-
 .../2.7/architecture-design/script/index.html      |   8 +-
 .../2.7/architecture-design/service/index.html     |   8 +-
 .../2.7/architecture-design/upstream/index.html    |   8 +-
 docs/apisix/2.7/aws/index.html                     |   8 +-
 docs/apisix/2.7/batch-processor/index.html         |   8 +-
 docs/apisix/2.7/benchmark/index.html               |   8 +-
 docs/apisix/2.7/certificate/index.html             |   8 +-
 docs/apisix/2.7/control-api/index.html             |   8 +-
 .../2.7/customize-nginx-configuration/index.html   |   8 +-
 docs/apisix/2.7/debug-function/index.html          |   8 +-
 docs/apisix/2.7/discovery/consul_kv/index.html     |   8 +-
 docs/apisix/2.7/discovery/dns/index.html           |   8 +-
 docs/apisix/2.7/discovery/eureka/index.html        |   8 +-
 docs/apisix/2.7/discovery/index.html               |   8 +-
 docs/apisix/2.7/discovery/nacos/index.html         |   8 +-
 docs/apisix/2.7/dns/index.html                     |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.7/external-plugin/index.html         |   8 +-
 docs/apisix/2.7/getting-started/index.html         |   8 +-
 docs/apisix/2.7/grpc-proxy/index.html              |   8 +-
 docs/apisix/2.7/health-check/index.html            |   8 +-
 docs/apisix/2.7/how-to-build/index.html            |   8 +-
 docs/apisix/2.7/https/index.html                   |   8 +-
 docs/apisix/2.7/install-dependencies/index.html    |   8 +-
 .../2.7/internal/testing-framework/index.html      |   8 +-
 docs/apisix/2.7/mtls/index.html                    |   8 +-
 docs/apisix/2.7/plugin-develop/index.html          |   8 +-
 docs/apisix/2.7/plugin-interceptors/index.html     |   8 +-
 docs/apisix/2.7/plugins/api-breaker/index.html     |   8 +-
 docs/apisix/2.7/plugins/authz-casbin/index.html    |   8 +-
 docs/apisix/2.7/plugins/authz-keycloak/index.html  |   8 +-
 docs/apisix/2.7/plugins/basic-auth/index.html      |   8 +-
 docs/apisix/2.7/plugins/batch-requests/index.html  |   8 +-
 docs/apisix/2.7/plugins/client-control/index.html  |   8 +-
 .../2.7/plugins/consumer-restriction/index.html    |   8 +-
 docs/apisix/2.7/plugins/cors/index.html            |   8 +-
 docs/apisix/2.7/plugins/dubbo-proxy/index.html     |   8 +-
 docs/apisix/2.7/plugins/echo/index.html            |   8 +-
 .../apisix/2.7/plugins/error-log-logger/index.html |   8 +-
 .../2.7/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.7/plugins/ext-plugin-pre-req/index.html      |   8 +-
 docs/apisix/2.7/plugins/fault-injection/index.html |   8 +-
 docs/apisix/2.7/plugins/grpc-transcode/index.html  |   8 +-
 docs/apisix/2.7/plugins/gzip/index.html            |   8 +-
 docs/apisix/2.7/plugins/hmac-auth/index.html       |   8 +-
 docs/apisix/2.7/plugins/http-logger/index.html     |   8 +-
 docs/apisix/2.7/plugins/index.html                 |   8 +-
 docs/apisix/2.7/plugins/ip-restriction/index.html  |   8 +-
 docs/apisix/2.7/plugins/jwt-auth/index.html        |   8 +-
 docs/apisix/2.7/plugins/kafka-logger/index.html    |   8 +-
 docs/apisix/2.7/plugins/key-auth/index.html        |   8 +-
 docs/apisix/2.7/plugins/limit-conn/index.html      |   8 +-
 docs/apisix/2.7/plugins/limit-count/index.html     |   8 +-
 docs/apisix/2.7/plugins/limit-req/index.html       |   8 +-
 docs/apisix/2.7/plugins/log-rotate/index.html      |   8 +-
 docs/apisix/2.7/plugins/mqtt-proxy/index.html      |   8 +-
 docs/apisix/2.7/plugins/node-status/index.html     |   8 +-
 docs/apisix/2.7/plugins/openid-connect/index.html  |   8 +-
 docs/apisix/2.7/plugins/prometheus/index.html      |   8 +-
 docs/apisix/2.7/plugins/proxy-cache/index.html     |   8 +-
 docs/apisix/2.7/plugins/proxy-mirror/index.html    |   8 +-
 docs/apisix/2.7/plugins/proxy-rewrite/index.html   |   8 +-
 docs/apisix/2.7/plugins/real-ip/index.html         |   8 +-
 docs/apisix/2.7/plugins/redirect/index.html        |   8 +-
 .../2.7/plugins/referer-restriction/index.html     |   8 +-
 docs/apisix/2.7/plugins/request-id/index.html      |   8 +-
 .../2.7/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.7/plugins/response-rewrite/index.html |   8 +-
 docs/apisix/2.7/plugins/server-info/index.html     |   8 +-
 docs/apisix/2.7/plugins/serverless/index.html      |   8 +-
 docs/apisix/2.7/plugins/skywalking/index.html      |   8 +-
 docs/apisix/2.7/plugins/sls-logger/index.html      |   8 +-
 docs/apisix/2.7/plugins/syslog/index.html          |   8 +-
 docs/apisix/2.7/plugins/tcp-logger/index.html      |   8 +-
 docs/apisix/2.7/plugins/traffic-split/index.html   |   8 +-
 docs/apisix/2.7/plugins/ua-restriction/index.html  |   8 +-
 docs/apisix/2.7/plugins/udp-logger/index.html      |   8 +-
 docs/apisix/2.7/plugins/uri-blocker/index.html     |   8 +-
 docs/apisix/2.7/plugins/wolf-rbac/index.html       |   8 +-
 docs/apisix/2.7/plugins/zipkin/index.html          |   8 +-
 docs/apisix/2.7/powered-by/index.html              |   8 +-
 docs/apisix/2.7/profile/index.html                 |   8 +-
 docs/apisix/2.7/router-radixtree/index.html        |   8 +-
 docs/apisix/2.7/stand-alone/index.html             |   8 +-
 docs/apisix/2.7/stream-proxy/index.html            |   8 +-
 docs/apisix/2.7/tags/index.html                    |   8 +-
 docs/apisix/2.8/FAQ/index.html                     |   8 +-
 docs/apisix/2.8/IGNORE_DOC/index.html              |   8 +-
 docs/apisix/2.8/admin-api/index.html               |   8 +-
 .../2.8/architecture-design/apisix/index.html      |   8 +-
 .../2.8/architecture-design/consumer/index.html    |   8 +-
 .../2.8/architecture-design/debug-mode/index.html  |   8 +-
 .../2.8/architecture-design/global-rule/index.html |   8 +-
 docs/apisix/2.8/architecture-design/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.8/architecture-design/plugin/index.html      |   8 +-
 .../2.8/architecture-design/route/index.html       |   8 +-
 .../2.8/architecture-design/router/index.html      |   8 +-
 .../2.8/architecture-design/script/index.html      |   8 +-
 .../2.8/architecture-design/service/index.html     |   8 +-
 .../2.8/architecture-design/upstream/index.html    |   8 +-
 docs/apisix/2.8/aws/index.html                     |   8 +-
 docs/apisix/2.8/batch-processor/index.html         |   8 +-
 docs/apisix/2.8/benchmark/index.html               |   8 +-
 docs/apisix/2.8/certificate/index.html             |   8 +-
 docs/apisix/2.8/control-api/index.html             |   8 +-
 .../2.8/customize-nginx-configuration/index.html   |   8 +-
 docs/apisix/2.8/debug-function/index.html          |   8 +-
 docs/apisix/2.8/discovery/consul_kv/index.html     |   8 +-
 docs/apisix/2.8/discovery/dns/index.html           |   8 +-
 docs/apisix/2.8/discovery/eureka/index.html        |   8 +-
 docs/apisix/2.8/discovery/index.html               |   8 +-
 docs/apisix/2.8/discovery/nacos/index.html         |   8 +-
 docs/apisix/2.8/dns/index.html                     |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/2.8/external-plugin/index.html         |   8 +-
 docs/apisix/2.8/getting-started/index.html         |   8 +-
 docs/apisix/2.8/grpc-proxy/index.html              |   8 +-
 docs/apisix/2.8/health-check/index.html            |   8 +-
 docs/apisix/2.8/how-to-build/index.html            |   8 +-
 docs/apisix/2.8/https/index.html                   |   8 +-
 docs/apisix/2.8/install-dependencies/index.html    |   8 +-
 .../2.8/internal/testing-framework/index.html      |   8 +-
 docs/apisix/2.8/mtls/index.html                    |   8 +-
 docs/apisix/2.8/plugin-develop/index.html          |   8 +-
 docs/apisix/2.8/plugin-interceptors/index.html     |   8 +-
 docs/apisix/2.8/plugins/api-breaker/index.html     |   8 +-
 docs/apisix/2.8/plugins/authz-casbin/index.html    |   8 +-
 docs/apisix/2.8/plugins/authz-keycloak/index.html  |   8 +-
 docs/apisix/2.8/plugins/basic-auth/index.html      |   8 +-
 docs/apisix/2.8/plugins/batch-requests/index.html  |   8 +-
 docs/apisix/2.8/plugins/client-control/index.html  |   8 +-
 .../2.8/plugins/consumer-restriction/index.html    |   8 +-
 docs/apisix/2.8/plugins/cors/index.html            |   8 +-
 docs/apisix/2.8/plugins/dubbo-proxy/index.html     |   8 +-
 docs/apisix/2.8/plugins/echo/index.html            |   8 +-
 .../apisix/2.8/plugins/error-log-logger/index.html |   8 +-
 .../2.8/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.8/plugins/ext-plugin-pre-req/index.html      |   8 +-
 docs/apisix/2.8/plugins/fault-injection/index.html |   8 +-
 docs/apisix/2.8/plugins/grpc-transcode/index.html  |   8 +-
 docs/apisix/2.8/plugins/gzip/index.html            |   8 +-
 docs/apisix/2.8/plugins/hmac-auth/index.html       |   8 +-
 docs/apisix/2.8/plugins/http-logger/index.html     |   8 +-
 docs/apisix/2.8/plugins/index.html                 |   8 +-
 docs/apisix/2.8/plugins/ip-restriction/index.html  |   8 +-
 docs/apisix/2.8/plugins/jwt-auth/index.html        |   8 +-
 docs/apisix/2.8/plugins/kafka-logger/index.html    |   8 +-
 docs/apisix/2.8/plugins/key-auth/index.html        |   8 +-
 docs/apisix/2.8/plugins/limit-conn/index.html      |   8 +-
 docs/apisix/2.8/plugins/limit-count/index.html     |   8 +-
 docs/apisix/2.8/plugins/limit-req/index.html       |   8 +-
 docs/apisix/2.8/plugins/log-rotate/index.html      |   8 +-
 docs/apisix/2.8/plugins/mqtt-proxy/index.html      |   8 +-
 docs/apisix/2.8/plugins/node-status/index.html     |   8 +-
 docs/apisix/2.8/plugins/openid-connect/index.html  |   8 +-
 docs/apisix/2.8/plugins/prometheus/index.html      |   8 +-
 docs/apisix/2.8/plugins/proxy-cache/index.html     |   8 +-
 docs/apisix/2.8/plugins/proxy-mirror/index.html    |   8 +-
 docs/apisix/2.8/plugins/proxy-rewrite/index.html   |   8 +-
 docs/apisix/2.8/plugins/real-ip/index.html         |   8 +-
 docs/apisix/2.8/plugins/redirect/index.html        |   8 +-
 .../2.8/plugins/referer-restriction/index.html     |   8 +-
 docs/apisix/2.8/plugins/request-id/index.html      |   8 +-
 .../2.8/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.8/plugins/response-rewrite/index.html |   8 +-
 docs/apisix/2.8/plugins/server-info/index.html     |   8 +-
 docs/apisix/2.8/plugins/serverless/index.html      |   8 +-
 docs/apisix/2.8/plugins/skywalking/index.html      |   8 +-
 docs/apisix/2.8/plugins/sls-logger/index.html      |   8 +-
 docs/apisix/2.8/plugins/syslog/index.html          |   8 +-
 docs/apisix/2.8/plugins/tcp-logger/index.html      |   8 +-
 docs/apisix/2.8/plugins/traffic-split/index.html   |   8 +-
 docs/apisix/2.8/plugins/ua-restriction/index.html  |   8 +-
 docs/apisix/2.8/plugins/udp-logger/index.html      |   8 +-
 docs/apisix/2.8/plugins/uri-blocker/index.html     |   8 +-
 docs/apisix/2.8/plugins/wolf-rbac/index.html       |   8 +-
 docs/apisix/2.8/plugins/zipkin/index.html          |   8 +-
 docs/apisix/2.8/powered-by/index.html              |   8 +-
 docs/apisix/2.8/profile/index.html                 |   8 +-
 docs/apisix/2.8/router-radixtree/index.html        |   8 +-
 docs/apisix/2.8/stand-alone/index.html             |   8 +-
 docs/apisix/2.8/stream-proxy/index.html            |   8 +-
 docs/apisix/2.8/tags/index.html                    |   8 +-
 docs/apisix/FAQ/index.html                         |   8 +-
 docs/apisix/IGNORE_DOC/index.html                  |   8 +-
 docs/apisix/admin-api/index.html                   |   8 +-
 docs/apisix/architecture-design/apisix/index.html  |   8 +-
 .../apisix/architecture-design/consumer/index.html |   8 +-
 .../architecture-design/debug-mode/index.html      |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 docs/apisix/architecture-design/index.html         |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 docs/apisix/architecture-design/plugin/index.html  |   8 +-
 docs/apisix/architecture-design/route/index.html   |   8 +-
 docs/apisix/architecture-design/router/index.html  |   8 +-
 docs/apisix/architecture-design/script/index.html  |   8 +-
 docs/apisix/architecture-design/service/index.html |   8 +-
 .../apisix/architecture-design/upstream/index.html |   8 +-
 docs/apisix/aws/index.html                         |   8 +-
 docs/apisix/batch-processor/index.html             |   8 +-
 docs/apisix/benchmark/index.html                   |   8 +-
 docs/apisix/certificate/index.html                 |   8 +-
 docs/apisix/control-api/index.html                 |   8 +-
 .../customize-nginx-configuration/index.html       |   8 +-
 docs/apisix/debug-function/index.html              |   8 +-
 docs/apisix/discovery/consul_kv/index.html         |   8 +-
 docs/apisix/discovery/dns/index.html               |   8 +-
 docs/apisix/discovery/eureka/index.html            |   8 +-
 docs/apisix/discovery/index.html                   |   8 +-
 docs/apisix/discovery/nacos/index.html             |   8 +-
 docs/apisix/dns/index.html                         |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/external-plugin/index.html             |   8 +-
 docs/apisix/getting-started/index.html             |   8 +-
 docs/apisix/grpc-proxy/index.html                  |   8 +-
 docs/apisix/health-check/index.html                |   8 +-
 docs/apisix/how-to-build/index.html                |   8 +-
 docs/apisix/https/index.html                       |   8 +-
 docs/apisix/install-dependencies/index.html        |   8 +-
 docs/apisix/internal/testing-framework/index.html  |   8 +-
 docs/apisix/mtls/index.html                        |   8 +-
 docs/apisix/next/FAQ/index.html                    |   8 +-
 docs/apisix/next/IGNORE_DOC/index.html             |  10 +-
 docs/apisix/next/admin-api/index.html              |   8 +-
 .../next/architecture-design/apisix/index.html     |   8 +-
 .../next/architecture-design/consumer/index.html   |   8 +-
 .../next/architecture-design/debug-mode/index.html |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 docs/apisix/next/architecture-design/index.html    |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../next/architecture-design/plugin/index.html     |   8 +-
 .../next/architecture-design/route/index.html      |   8 +-
 .../next/architecture-design/router/index.html     |   8 +-
 .../next/architecture-design/script/index.html     |   8 +-
 .../next/architecture-design/service/index.html    |   8 +-
 .../next/architecture-design/upstream/index.html   |   8 +-
 docs/apisix/next/aws/index.html                    |   8 +-
 docs/apisix/next/batch-processor/index.html        |   8 +-
 docs/apisix/next/benchmark/index.html              |   8 +-
 docs/apisix/next/certificate/index.html            |   8 +-
 docs/apisix/next/control-api/index.html            |   8 +-
 .../next/customize-nginx-configuration/index.html  |   8 +-
 docs/apisix/next/debug-function/index.html         |   8 +-
 docs/apisix/next/discovery/consul_kv/index.html    |   8 +-
 docs/apisix/next/discovery/dns/index.html          |   8 +-
 docs/apisix/next/discovery/eureka/index.html       |   8 +-
 docs/apisix/next/discovery/index.html              |   8 +-
 docs/apisix/next/discovery/nacos/index.html        |   8 +-
 docs/apisix/next/dns/index.html                    |   8 +-
 .../index.html                                     |   8 +-
 docs/apisix/next/external-plugin/index.html        |   8 +-
 docs/apisix/next/getting-started/index.html        |   8 +-
 docs/apisix/next/grpc-proxy/index.html             |   8 +-
 docs/apisix/next/health-check/index.html           |   8 +-
 docs/apisix/next/how-to-build/index.html           |   8 +-
 docs/apisix/next/https/index.html                  |   8 +-
 docs/apisix/next/install-dependencies/index.html   |   8 +-
 .../next/internal/testing-framework/index.html     |   8 +-
 docs/apisix/next/mtls/index.html                   |   8 +-
 docs/apisix/next/plugin-develop/index.html         |   8 +-
 docs/apisix/next/plugin-interceptors/index.html    |   8 +-
 docs/apisix/next/plugins/api-breaker/index.html    |   8 +-
 docs/apisix/next/plugins/authz-casbin/index.html   |   8 +-
 docs/apisix/next/plugins/authz-keycloak/index.html |   8 +-
 docs/apisix/next/plugins/basic-auth/index.html     |   8 +-
 docs/apisix/next/plugins/batch-requests/index.html |   8 +-
 docs/apisix/next/plugins/client-control/index.html |   8 +-
 .../next/plugins/consumer-restriction/index.html   |   8 +-
 docs/apisix/next/plugins/cors/index.html           |   8 +-
 docs/apisix/next/plugins/dubbo-proxy/index.html    |   8 +-
 docs/apisix/next/plugins/echo/index.html           |   8 +-
 .../next/plugins/error-log-logger/index.html       |   8 +-
 .../next/plugins/ext-plugin-post-req/index.html    |   8 +-
 .../next/plugins/ext-plugin-pre-req/index.html     |   8 +-
 .../apisix/next/plugins/fault-injection/index.html |   8 +-
 docs/apisix/next/plugins/grpc-transcode/index.html |   8 +-
 docs/apisix/next/plugins/gzip/index.html           |   8 +-
 docs/apisix/next/plugins/hmac-auth/index.html      |   8 +-
 docs/apisix/next/plugins/http-logger/index.html    |   8 +-
 docs/apisix/next/plugins/index.html                |   8 +-
 docs/apisix/next/plugins/ip-restriction/index.html |   8 +-
 docs/apisix/next/plugins/jwt-auth/index.html       |   8 +-
 docs/apisix/next/plugins/kafka-logger/index.html   |   8 +-
 docs/apisix/next/plugins/key-auth/index.html       |   8 +-
 docs/apisix/next/plugins/limit-conn/index.html     |   8 +-
 docs/apisix/next/plugins/limit-count/index.html    |   8 +-
 docs/apisix/next/plugins/limit-req/index.html      |   8 +-
 docs/apisix/next/plugins/log-rotate/index.html     |   8 +-
 docs/apisix/next/plugins/mqtt-proxy/index.html     |   8 +-
 docs/apisix/next/plugins/node-status/index.html    |   8 +-
 docs/apisix/next/plugins/openid-connect/index.html |   8 +-
 docs/apisix/next/plugins/prometheus/index.html     |   8 +-
 docs/apisix/next/plugins/proxy-cache/index.html    |   8 +-
 docs/apisix/next/plugins/proxy-mirror/index.html   |   8 +-
 docs/apisix/next/plugins/proxy-rewrite/index.html  |   8 +-
 docs/apisix/next/plugins/real-ip/index.html        |   8 +-
 docs/apisix/next/plugins/redirect/index.html       |   8 +-
 .../next/plugins/referer-restriction/index.html    |   8 +-
 docs/apisix/next/plugins/request-id/index.html     |   8 +-
 .../next/plugins/request-validation/index.html     |   8 +-
 .../next/plugins/response-rewrite/index.html       |   8 +-
 docs/apisix/next/plugins/server-info/index.html    |   8 +-
 docs/apisix/next/plugins/serverless/index.html     |   8 +-
 docs/apisix/next/plugins/skywalking/index.html     |   8 +-
 docs/apisix/next/plugins/sls-logger/index.html     |   8 +-
 docs/apisix/next/plugins/syslog/index.html         |   8 +-
 docs/apisix/next/plugins/tcp-logger/index.html     |   8 +-
 docs/apisix/next/plugins/traffic-split/index.html  |   8 +-
 docs/apisix/next/plugins/ua-restriction/index.html |   8 +-
 docs/apisix/next/plugins/udp-logger/index.html     |   8 +-
 docs/apisix/next/plugins/uri-blocker/index.html    |   8 +-
 docs/apisix/next/plugins/wolf-rbac/index.html      |   8 +-
 docs/apisix/next/plugins/zipkin/index.html         |   8 +-
 docs/apisix/next/powered-by/index.html             |   8 +-
 docs/apisix/next/profile/index.html                |   8 +-
 docs/apisix/next/router-radixtree/index.html       |   8 +-
 docs/apisix/next/stand-alone/index.html            |   8 +-
 docs/apisix/next/stream-proxy/index.html           |   8 +-
 docs/apisix/next/tags/index.html                   |   8 +-
 docs/apisix/plugin-develop/index.html              |   8 +-
 docs/apisix/plugin-interceptors/index.html         |   8 +-
 docs/apisix/plugins/api-breaker/index.html         |   8 +-
 docs/apisix/plugins/authz-casbin/index.html        |   8 +-
 docs/apisix/plugins/authz-keycloak/index.html      |   8 +-
 docs/apisix/plugins/basic-auth/index.html          |   8 +-
 docs/apisix/plugins/batch-requests/index.html      |   8 +-
 docs/apisix/plugins/client-control/index.html      |   8 +-
 .../apisix/plugins/consumer-restriction/index.html |   8 +-
 docs/apisix/plugins/cors/index.html                |   8 +-
 docs/apisix/plugins/dubbo-proxy/index.html         |   8 +-
 docs/apisix/plugins/echo/index.html                |   8 +-
 docs/apisix/plugins/error-log-logger/index.html    |   8 +-
 docs/apisix/plugins/ext-plugin-post-req/index.html |   8 +-
 docs/apisix/plugins/ext-plugin-pre-req/index.html  |   8 +-
 docs/apisix/plugins/fault-injection/index.html     |   8 +-
 docs/apisix/plugins/grpc-transcode/index.html      |   8 +-
 docs/apisix/plugins/gzip/index.html                |   8 +-
 docs/apisix/plugins/hmac-auth/index.html           |   8 +-
 docs/apisix/plugins/http-logger/index.html         |   8 +-
 docs/apisix/plugins/index.html                     |   8 +-
 docs/apisix/plugins/ip-restriction/index.html      |   8 +-
 docs/apisix/plugins/jwt-auth/index.html            |   8 +-
 docs/apisix/plugins/kafka-logger/index.html        |   8 +-
 docs/apisix/plugins/key-auth/index.html            |   8 +-
 docs/apisix/plugins/limit-conn/index.html          |   8 +-
 docs/apisix/plugins/limit-count/index.html         |   8 +-
 docs/apisix/plugins/limit-req/index.html           |   8 +-
 docs/apisix/plugins/log-rotate/index.html          |   8 +-
 docs/apisix/plugins/mqtt-proxy/index.html          |   8 +-
 docs/apisix/plugins/node-status/index.html         |   8 +-
 docs/apisix/plugins/openid-connect/index.html      |   8 +-
 docs/apisix/plugins/prometheus/index.html          |   8 +-
 docs/apisix/plugins/proxy-cache/index.html         |   8 +-
 docs/apisix/plugins/proxy-mirror/index.html        |   8 +-
 docs/apisix/plugins/proxy-rewrite/index.html       |   8 +-
 docs/apisix/plugins/real-ip/index.html             |   8 +-
 docs/apisix/plugins/redirect/index.html            |   8 +-
 docs/apisix/plugins/referer-restriction/index.html |   8 +-
 docs/apisix/plugins/request-id/index.html          |   8 +-
 docs/apisix/plugins/request-validation/index.html  |   8 +-
 docs/apisix/plugins/response-rewrite/index.html    |   8 +-
 docs/apisix/plugins/server-info/index.html         |   8 +-
 docs/apisix/plugins/serverless/index.html          |   8 +-
 docs/apisix/plugins/skywalking/index.html          |   8 +-
 docs/apisix/plugins/sls-logger/index.html          |   8 +-
 docs/apisix/plugins/syslog/index.html              |   8 +-
 docs/apisix/plugins/tcp-logger/index.html          |   8 +-
 docs/apisix/plugins/traffic-split/index.html       |   8 +-
 docs/apisix/plugins/ua-restriction/index.html      |   8 +-
 docs/apisix/plugins/udp-logger/index.html          |   8 +-
 docs/apisix/plugins/uri-blocker/index.html         |   8 +-
 docs/apisix/plugins/wolf-rbac/index.html           |   8 +-
 docs/apisix/plugins/zipkin/index.html              |   8 +-
 docs/apisix/powered-by/index.html                  |   8 +-
 docs/apisix/profile/index.html                     |   8 +-
 docs/apisix/router-radixtree/index.html            |   8 +-
 docs/apisix/stand-alone/index.html                 |   8 +-
 docs/apisix/stream-proxy/index.html                |   8 +-
 docs/apisix/tags/index.html                        |   8 +-
 docs/dashboard/2.5/FAQ/index.html                  |   8 +-
 docs/dashboard/2.5/I18N_USER_GUIDE/index.html      |   8 +-
 docs/dashboard/2.5/IGNORE_DOC/index.html           |   8 +-
 .../2.5/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 docs/dashboard/2.5/USER_GUIDE/index.html           |   8 +-
 docs/dashboard/2.5/api/api/index.html              |   8 +-
 docs/dashboard/2.5/back-end-tests/index.html       |   8 +-
 docs/dashboard/2.5/deploy-with-docker/index.html   |   8 +-
 docs/dashboard/2.5/deploy-with-rpm/index.html      |   8 +-
 docs/dashboard/2.5/deploy/index.html               |   8 +-
 docs/dashboard/2.5/develop/index.html              |   8 +-
 docs/dashboard/2.5/front-end-e2e/index.html        |   8 +-
 docs/dashboard/2.5/tags/index.html                 |   8 +-
 docs/dashboard/2.6.1/FAQ/index.html                |   8 +-
 docs/dashboard/2.6.1/I18N_USER_GUIDE/index.html    |   8 +-
 docs/dashboard/2.6.1/IGNORE_DOC/index.html         |   8 +-
 .../2.6.1/IMPORT_OPENAPI_USER_GUIDE/index.html     |   8 +-
 docs/dashboard/2.6.1/USER_GUIDE/index.html         |   8 +-
 docs/dashboard/2.6.1/api/api/index.html            |   8 +-
 docs/dashboard/2.6.1/back-end-tests/index.html     |   8 +-
 docs/dashboard/2.6.1/deploy-with-docker/index.html |   8 +-
 docs/dashboard/2.6.1/deploy-with-rpm/index.html    |   8 +-
 docs/dashboard/2.6.1/deploy/index.html             |   8 +-
 docs/dashboard/2.6.1/develop/index.html            |   8 +-
 docs/dashboard/2.6.1/front-end-e2e/index.html      |   8 +-
 docs/dashboard/2.6.1/tags/index.html               |   8 +-
 docs/dashboard/2.6/FAQ/index.html                  |   8 +-
 docs/dashboard/2.6/I18N_USER_GUIDE/index.html      |   8 +-
 docs/dashboard/2.6/IGNORE_DOC/index.html           |   8 +-
 .../2.6/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 docs/dashboard/2.6/USER_GUIDE/index.html           |   8 +-
 docs/dashboard/2.6/api/api/index.html              |   8 +-
 docs/dashboard/2.6/back-end-tests/index.html       |   8 +-
 docs/dashboard/2.6/deploy-with-docker/index.html   |   8 +-
 docs/dashboard/2.6/deploy-with-rpm/index.html      |   8 +-
 docs/dashboard/2.6/deploy/index.html               |   8 +-
 docs/dashboard/2.6/develop/index.html              |   8 +-
 docs/dashboard/2.6/front-end-e2e/index.html        |   8 +-
 docs/dashboard/2.6/tags/index.html                 |   8 +-
 docs/dashboard/2.7.1/FAQ/index.html                |   8 +-
 docs/dashboard/2.7.1/I18N_USER_GUIDE/index.html    |   8 +-
 docs/dashboard/2.7.1/IGNORE_DOC/index.html         |   8 +-
 .../2.7.1/IMPORT_OPENAPI_USER_GUIDE/index.html     |   8 +-
 docs/dashboard/2.7.1/USER_GUIDE/index.html         |   8 +-
 docs/dashboard/2.7.1/api/api/index.html            |   8 +-
 docs/dashboard/2.7.1/back-end-tests/index.html     |   8 +-
 docs/dashboard/2.7.1/deploy-with-docker/index.html |   8 +-
 docs/dashboard/2.7.1/deploy-with-rpm/index.html    |   8 +-
 docs/dashboard/2.7.1/deploy/index.html             |   8 +-
 docs/dashboard/2.7.1/develop/index.html            |   8 +-
 docs/dashboard/2.7.1/front-end-e2e/index.html      |   8 +-
 docs/dashboard/2.7.1/tags/index.html               |   8 +-
 docs/dashboard/2.7/FAQ/index.html                  |   8 +-
 docs/dashboard/2.7/I18N_USER_GUIDE/index.html      |   8 +-
 docs/dashboard/2.7/IGNORE_DOC/index.html           |   8 +-
 .../2.7/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 docs/dashboard/2.7/USER_GUIDE/index.html           |   8 +-
 docs/dashboard/2.7/api/api/index.html              |   8 +-
 docs/dashboard/2.7/back-end-tests/index.html       |   8 +-
 docs/dashboard/2.7/deploy-with-docker/index.html   |   8 +-
 docs/dashboard/2.7/deploy-with-rpm/index.html      |   8 +-
 docs/dashboard/2.7/deploy/index.html               |   8 +-
 docs/dashboard/2.7/develop/index.html              |   8 +-
 docs/dashboard/2.7/front-end-e2e/index.html        |   8 +-
 docs/dashboard/2.7/tags/index.html                 |   8 +-
 docs/dashboard/FAQ/index.html                      |   8 +-
 docs/dashboard/I18N_USER_GUIDE/index.html          |   8 +-
 docs/dashboard/IGNORE_DOC/index.html               |   8 +-
 .../dashboard/IMPORT_OPENAPI_USER_GUIDE/index.html |   8 +-
 docs/dashboard/USER_GUIDE/index.html               |   8 +-
 docs/dashboard/api/api/index.html                  |   8 +-
 docs/dashboard/back-end-tests/index.html           |   8 +-
 docs/dashboard/deploy-with-docker/index.html       |   8 +-
 docs/dashboard/deploy-with-rpm/index.html          |   8 +-
 docs/dashboard/deploy/index.html                   |   8 +-
 docs/dashboard/develop/index.html                  |   8 +-
 docs/dashboard/front-end-e2e/index.html            |   8 +-
 docs/dashboard/next/FAQ/index.html                 |   8 +-
 docs/dashboard/next/I18N_USER_GUIDE/index.html     |   8 +-
 docs/dashboard/next/IGNORE_DOC/index.html          |  10 +-
 .../next/IMPORT_OPENAPI_USER_GUIDE/index.html      |   8 +-
 docs/dashboard/next/USER_GUIDE/index.html          |   8 +-
 docs/dashboard/next/api/api/index.html             |   8 +-
 docs/dashboard/next/back-end-tests/index.html      |   8 +-
 docs/dashboard/next/deploy-with-docker/index.html  |   8 +-
 docs/dashboard/next/deploy-with-rpm/index.html     |   8 +-
 docs/dashboard/next/deploy/index.html              |   8 +-
 docs/dashboard/next/develop/index.html             |   8 +-
 docs/dashboard/next/front-end-e2e/index.html       |   8 +-
 docs/dashboard/next/tags/index.html                |   8 +-
 docs/dashboard/tags/index.html                     |   8 +-
 docs/docker/IGNORE_DOC/index.html                  |   8 +-
 docs/docker/apisix-2.10.0/IGNORE_DOC/index.html    |   8 +-
 docs/docker/apisix-2.10.0/build/index.html         |   8 +-
 docs/docker/apisix-2.10.0/example/index.html       |   8 +-
 docs/docker/apisix-2.10.0/manual/index.html        |   8 +-
 docs/docker/apisix-2.10.0/tags/index.html          |   8 +-
 docs/docker/apisix-2.9.0/IGNORE_DOC/index.html     |   8 +-
 docs/docker/apisix-2.9.0/build/index.html          |   8 +-
 docs/docker/apisix-2.9.0/example/index.html        |   8 +-
 docs/docker/apisix-2.9.0/manual/index.html         |   8 +-
 docs/docker/apisix-2.9.0/tags/index.html           |   8 +-
 docs/docker/build/index.html                       |   8 +-
 docs/docker/example/index.html                     |   8 +-
 docs/docker/manual/index.html                      |   8 +-
 docs/docker/next/IGNORE_DOC/index.html             |  10 +-
 docs/docker/next/build/index.html                  |   8 +-
 docs/docker/next/example/index.html                |   8 +-
 docs/docker/next/manual/index.html                 |   8 +-
 docs/docker/next/tags/index.html                   |   8 +-
 docs/docker/tags/index.html                        |   8 +-
 docs/general/2fa/index.html                        |  10 +-
 docs/general/committer-guide/index.html            |  10 +-
 docs/general/contributor-guide/index.html          |  10 +-
 .../general/integrate-with-project-docs/index.html |  10 +-
 docs/general/release-guide/index.html              |  10 +-
 docs/general/security/index.html                   |  10 +-
 docs/general/subscribe-guide/index.html            |  10 +-
 docs/general/tags/index.html                       |   8 +-
 docs/go-plugin-runner/0.1.0/IGNORE_DOC/index.html  |   8 +-
 .../0.1.0/developer-guide/index.html               |   8 +-
 .../0.1.0/getting-started/index.html               |   8 +-
 docs/go-plugin-runner/0.1.0/tags/index.html        |   8 +-
 docs/go-plugin-runner/IGNORE_DOC/index.html        |   8 +-
 docs/go-plugin-runner/developer-guide/index.html   |   8 +-
 docs/go-plugin-runner/getting-started/index.html   |   8 +-
 docs/go-plugin-runner/next/IGNORE_DOC/index.html   |  10 +-
 .../next/developer-guide/index.html                |   8 +-
 .../next/getting-started/index.html                |   8 +-
 docs/go-plugin-runner/next/tags/index.html         |   8 +-
 docs/go-plugin-runner/tags/index.html              |   8 +-
 docs/helm-chart/FAQ/index.html                     |   8 +-
 docs/helm-chart/IGNORE_DOC/index.html              |  10 +-
 docs/helm-chart/apisix-dashboard/index.html        |   8 +-
 .../apisix-ingress-controller/index.html           |   8 +-
 docs/helm-chart/apisix/index.html                  |   8 +-
 docs/helm-chart/tags/index.html                    |   8 +-
 docs/index.html                                    |   8 +-
 docs/ingress-controller/FAQ/index.html             |   8 +-
 docs/ingress-controller/IGNORE_DOC/index.html      |  10 +-
 .../concepts/annotations/index.html                |   8 +-
 .../concepts/apisix_cluster_config/index.html      |   8 +-
 .../concepts/apisix_route/index.html               |   8 +-
 .../concepts/apisix_tls/index.html                 |   8 +-
 .../concepts/apisix_upstream/index.html            |   8 +-
 docs/ingress-controller/contribute/index.html      |   8 +-
 docs/ingress-controller/deployments/ack/index.html |   8 +-
 docs/ingress-controller/deployments/aws/index.html |   8 +-
 .../deployments/azure/index.html                   |   8 +-
 docs/ingress-controller/deployments/gke/index.html |   8 +-
 .../deployments/k3s-rke/index.html                 |   8 +-
 .../deployments/kubesphere/index.html              |   8 +-
 .../deployments/minikube/index.html                |   8 +-
 docs/ingress-controller/deployments/tke/index.html |   8 +-
 docs/ingress-controller/design/index.html          |   8 +-
 docs/ingress-controller/development/index.html     |   8 +-
 docs/ingress-controller/getting-started/index.html |   8 +-
 .../practices/check-crd-status/index.html          |   8 +-
 docs/ingress-controller/practices/index/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 docs/ingress-controller/practices/mtls/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../practices/proxy-the-httpbin-service/index.html |   8 +-
 .../practices/the-hard-way/index.html              |   8 +-
 .../references/apisix_cluster_config/index.html    |   8 +-
 .../references/apisix_route_v1/index.html          |   8 +-
 .../references/apisix_route_v2alpha1/index.html    |   8 +-
 .../references/apisix_route_v2beta1/index.html     |   8 +-
 .../references/apisix_tls/index.html               |   8 +-
 .../references/apisix_upstream/index.html          |   8 +-
 docs/ingress-controller/tags/index.html            |   8 +-
 docs/java-plugin-runner/IGNORE_DOC/index.html      |   8 +-
 docs/java-plugin-runner/development/index.html     |   8 +-
 docs/java-plugin-runner/how-it-works/index.html    |   8 +-
 docs/java-plugin-runner/next/IGNORE_DOC/index.html |  10 +-
 .../java-plugin-runner/next/development/index.html |   8 +-
 .../next/how-it-works/index.html                   |   8 +-
 docs/java-plugin-runner/next/tags/index.html       |   8 +-
 .../index.html                                     |   8 +-
 docs/java-plugin-runner/tags/index.html            |   8 +-
 .../index.html                                     |   8 +-
 docs/python-plugin-runner/IGNORE_DOC/index.html    |   8 +-
 .../developer-guide/index.html                     |   8 +-
 .../getting-started/index.html                     |   8 +-
 .../next/IGNORE_DOC/index.html                     |  10 +-
 .../next/developer-guide/index.html                |   8 +-
 .../next/getting-started/index.html                |   8 +-
 docs/python-plugin-runner/next/tags/index.html     |   8 +-
 docs/python-plugin-runner/tags/index.html          |   8 +-
 downloads/index.html                               |   8 +-
 events/archive/index.html                          |   8 +-
 help/index.html                                    |   8 +-
 index.html                                         |   8 +-
 plugins/index.html                                 |   8 +-
 .../11/15/release-apache-apisix-0.9/index.html     |   8 +-
 .../2019/9/29/release-apache-apisix-0.8/index.html |   8 +-
 .../2019/9/6/release-apache-apisix-0.7/index.html  |   8 +-
 .../2020/1/15/release-apache-apisix-1.0/index.html |   8 +-
 .../10/28/release-apache-apisix-2.0/index.html     |   8 +-
 .../2020/12/1/release-apache-apisix-2.1/index.html |   8 +-
 .../release-apache-apisix-dashboard-2.2/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2020/2/24/release-apache-apisix-1.1/index.html |   8 +-
 .../release-apache-apisix-dashboard-1.0/index.html |   8 +-
 .../2020/4/20/release-apache-apisix-1.2/index.html |   8 +-
 .../2020/5/26/release-apache-apisix-1.3/index.html |   8 +-
 .../2020/6/30/release-apache-apisix-1.4/index.html |   8 +-
 .../7/20/release-apache-apisix-1.4.1/index.html    |   8 +-
 .../release-apache-apisix-dashboard-1.5/index.html |   8 +-
 .../2020/8/6/release-apache-apisix-1.5/index.html  |   8 +-
 .../release-apache-apisix-dashboard-2.3/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2021/1/8/release-apache-apisix-2.2/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.4/index.html |   8 +-
 .../2021/2/9/release-apache-apisix-2.3/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.5/index.html |   8 +-
 .../2021/3/5/release-apache-apisix-2.4/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.6/index.html |   8 +-
 .../2021/4/5/release-apache-apisix-2.5/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../2021/5/24/release-apache-apisix-2.6/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.7/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2021/6/25/release-apache-apisix-2.7/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../2021/7/27/release-apache-apisix-2.8/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../2021/8/27/release-apache-apisix-2.9/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.8/index.html |   8 +-
 releases/archive/index.html                        |   8 +-
 releases/index.html                                |   8 +-
 releases/page/2/index.html                         |   8 +-
 releases/page/3/index.html                         |   8 +-
 releases/page/4/index.html                         |   8 +-
 releases/page/5/index.html                         |   8 +-
 releases/tags/apisix-dashboard/index.html          |   8 +-
 releases/tags/apisix-go-plugin-runner/index.html   |   8 +-
 releases/tags/apisix-ingress-controller/index.html |   8 +-
 releases/tags/apisix-java-plugin-runner/index.html |   8 +-
 .../tags/apisix-python-plugin-runner/index.html    |   8 +-
 releases/tags/apisix/index.html                    |   8 +-
 releases/tags/index.html                           |   8 +-
 search/index.html                                  |  10 +-
 sections/components/arrowAnim/index.html           |   8 +-
 sections/components/eventPosterCard/index.html     |   8 +-
 sections/components/heroCanvas/index.html          |   8 +-
 sections/components/ossCanvas/index.html           |   8 +-
 showcase/index.html                                |   8 +-
 sitemap.xml                                        |   2 +-
 team/index.html                                    |   8 +-
 zh/404.html                                        |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |  12 +-
 .../Apache-APISIX-Incubator-Journey/index.html     |   8 +-
 .../Apache-APISIX-Kubernetes-Ingress/index.html    |   8 +-
 .../Apache-APISIX-in-China-Mobile-Cloud/index.html |  12 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../Speed-Limiting-With-Apache-APISIX/index.html   |   8 +-
 .../index.html                                     |   8 +-
 zh/articles/The-Appeal-of-OpenSource/index.html    |   8 +-
 .../The-Evolution-of-Apache-APISIX/index.html      |   8 +-
 .../index.html                                     |   8 +-
 zh/articles/archive/index.html                     |   8 +-
 zh/articles/atom.xml                               |   6 +-
 zh/articles/index.html                             |  10 +-
 zh/articles/page/2/index.html                      |   8 +-
 zh/articles/rss.xml                                |   6 +-
 ...21-08-25-1-2c34d7ef82b36926ba577c5508bf69bc.png | Bin 211416 -> 0 bytes
 zh/assets/js/01112930.6878b305.js                  |   1 -
 zh/assets/js/01112930.6efc7a0e.js                  |   1 +
 zh/assets/js/01640327.3042fb4e.js                  |   1 +
 zh/assets/js/01640327.e6f48249.js                  |   1 -
 zh/assets/js/017e6c30.ec74d6d6.js                  |   1 -
 zh/assets/js/02553ecc.690c0595.js                  |   1 +
 zh/assets/js/0608ea24.77ebc11e.js                  |   1 +
 zh/assets/js/065fdbb8.f662c540.js                  |   1 +
 zh/assets/js/08110f6c.48817065.js                  |   1 -
 zh/assets/js/08ccb2cb.f8367cf1.js                  |   1 -
 zh/assets/js/09b17eb5.9b924c30.js                  |   1 -
 zh/assets/js/09b17eb5.df91d422.js                  |   1 +
 zh/assets/js/0a868c8c.5ee9038d.js                  |   1 -
 zh/assets/js/0e5dc264.48ed3249.js                  |   1 -
 zh/assets/js/11f7bf39.7236932a.js                  |   1 -
 zh/assets/js/1264ab03.d9b27520.js                  |   1 -
 zh/assets/js/12d4a5d0.3a4fa435.js                  |   1 +
 zh/assets/js/1525454b.2cda85c7.js                  |   1 +
 zh/assets/js/162f0a69.d5b3e782.js                  |   1 +
 zh/assets/js/17c2d770.72859880.js                  |   1 +
 zh/assets/js/1984c093.04692367.js                  |   1 -
 zh/assets/js/19945770.01237068.js                  |   1 +
 zh/assets/js/19945770.efe93369.js                  |   1 -
 zh/assets/js/1a279caa.d638fd45.js                  |   1 -
 zh/assets/js/1a76dc05.22892939.js                  |   1 -
 zh/assets/js/1b8972ee.46cad9e7.js                  |   1 -
 zh/assets/js/1ba65c75.48b9de3d.js                  |   1 -
 zh/assets/js/1c89ab3b.7a49d508.js                  |   1 -
 zh/assets/js/1ccd5742.e39c2c34.js                  |   1 -
 zh/assets/js/1fc0f142.24d31650.js                  |   1 +
 zh/assets/js/1fce243b.3eb4bab0.js                  |   1 -
 zh/assets/js/20303563.b232f3d7.js                  |   1 -
 zh/assets/js/220ca757.58320a8a.js                  |   1 -
 zh/assets/js/259178ae.08dffd0d.js                  |   1 +
 zh/assets/js/25a150ef.57dae78d.js                  |   1 -
 zh/assets/js/2613d761.b7e634ae.js                  |   1 +
 zh/assets/js/2a264b2a.0434a607.js                  |   1 -
 zh/assets/js/2a4ecb2c.fcdd7815.js                  |   1 +
 zh/assets/js/2a8cf3a9.ea178f5d.js                  |   1 -
 zh/assets/js/2b284e94.46045083.js                  |   1 +
 zh/assets/js/2b5f7ee9.7189c0e9.js                  |   1 +
 zh/assets/js/2bde796e.34198e38.js                  |   1 -
 zh/assets/js/2d2b0f0c.cd0cc5a9.js                  |   1 -
 zh/assets/js/2e82abd4.5f86a69b.js                  |   1 +
 zh/assets/js/2ed9567c.b09c9b01.js                  |   1 -
 zh/assets/js/30c762b6.fbd68317.js                  |   1 -
 zh/assets/js/31c3463d.be40aebc.js                  |   1 +
 zh/assets/js/3240be29.ecf99338.js                  |   1 -
 zh/assets/js/3393d167.290aa716.js                  |   1 +
 zh/assets/js/3393d167.90498fc3.js                  |   1 -
 zh/assets/js/33a6a7aa.705ea51f.js                  |   1 -
 zh/assets/js/33dee1de.b26de3ad.js                  |   1 -
 zh/assets/js/34107ac7.8fd6ea23.js                  |   1 -
 zh/assets/js/358566b4.44a3d88e.js                  |   1 +
 zh/assets/js/358566b4.fb743f08.js                  |   1 -
 zh/assets/js/35afad33.26f9f804.js                  |   1 +
 zh/assets/js/3681a0d2.56c84457.js                  |   1 +
 zh/assets/js/384076c9.3188e119.js                  |   1 +
 zh/assets/js/385b1818.065e39f6.js                  |   1 -
 zh/assets/js/391e08f6.415d8ec9.js                  |   1 +
 zh/assets/js/39a172a5.10555746.js                  |   1 +
 zh/assets/js/3a332aed.2cc275c4.js                  |   1 +
 zh/assets/js/3a332aed.91c41138.js                  |   1 -
 zh/assets/js/3ac011a1.308c3eab.js                  |   1 +
 zh/assets/js/3b0adab2.45fc0dc5.js                  |   1 -
 zh/assets/js/3ba63bfb.8bcffafa.js                  |   1 -
 zh/assets/js/3da423b3.c9ac2264.js                  |   1 -
 zh/assets/js/3dc9f306.1d6d6958.js                  |   1 +
 zh/assets/js/3dc9f306.40925608.js                  |   1 -
 zh/assets/js/3e0a051c.775b4f9d.js                  |   1 +
 zh/assets/js/3ea15b7a.7ca34a33.js                  |   1 -
 zh/assets/js/3f1d8fb5.4107dfd7.js                  |   1 +
 zh/assets/js/3f6b4018.0cf98378.js                  |   1 +
 zh/assets/js/3fc6ae28.7261d621.js                  |   1 -
 zh/assets/js/40fb2fae.375b9e5d.js                  |   1 +
 zh/assets/js/40fb2fae.89ea16ff.js                  |   1 -
 zh/assets/js/418f4e69.46aeec4f.js                  |   1 +
 zh/assets/js/428f5968.8b4b8518.js                  |   1 -
 zh/assets/js/433e9d41.a147bc37.js                  |   1 -
 zh/assets/js/4483f9ee.2f469a99.js                  |   1 +
 zh/assets/js/4483f9ee.5920fd21.js                  |   1 -
 zh/assets/js/449c9590.5f751dfe.js                  |   1 -
 zh/assets/js/45ab1254.6da27606.js                  |   1 -
 zh/assets/js/4643c220.4c5b0df8.js                  |   1 +
 zh/assets/js/46c95002.f1b47a4b.js                  |   1 +
 zh/assets/js/47e0bf55.3e61f907.js                  |   1 -
 zh/assets/js/482bd14a.9efbc77c.js                  |   1 +
 zh/assets/js/4c20006b.237953d0.js                  |   1 -
 zh/assets/js/4c20006b.fed8e505.js                  |   1 +
 zh/assets/js/4d03890a.22e8aaf8.js                  |   1 +
 zh/assets/js/4d0f4723.10d89eb8.js                  |   1 +
 zh/assets/js/4ed25eed.068dc8f0.js                  |   1 -
 zh/assets/js/50a6326d.0716a05d.js                  |   1 +
 zh/assets/js/50f4d33e.b8c1fdd1.js                  |   1 -
 zh/assets/js/50facf8e.23d9e39f.js                  |   1 +
 zh/assets/js/50facf8e.c8e7b9c3.js                  |   1 -
 zh/assets/js/514de2af.bc88cf6a.js                  |   1 -
 zh/assets/js/53b88444.3adbdac7.js                  |   1 -
 zh/assets/js/53e90e00.bdabbe76.js                  |   1 -
 zh/assets/js/542fd41f.511e04fb.js                  |   1 -
 zh/assets/js/542fd41f.ad681539.js                  |   1 +
 zh/assets/js/55ea525a.cd2f3e86.js                  |   1 +
 zh/assets/js/563a3008.19872610.js                  |   1 -
 zh/assets/js/56b4fd9f.fabb108a.js                  |   1 -
 zh/assets/js/56ef7775.715bda3e.js                  |   1 -
 zh/assets/js/57218adb.93341587.js                  |   1 -
 zh/assets/js/57f3a293.c126b5e1.js                  |   1 -
 zh/assets/js/59f6021d.7e57c05a.js                  |   1 +
 zh/assets/js/5aca9bfb.6dc85182.js                  |   1 -
 zh/assets/js/5b012f59.d3248a65.js                  |   1 -
 zh/assets/js/5b0fa993.4e29d37c.js                  |   1 +
 zh/assets/js/5b0fa993.61ec3914.js                  |   1 -
 zh/assets/js/5b79823b.fda8f9eb.js                  |   1 -
 zh/assets/js/5bb67ffc.7544d236.js                  |   1 -
 zh/assets/js/5c52ae0a.4f8bd4db.js                  |   1 +
 zh/assets/js/5eae7258.14609eb3.js                  |   1 +
 zh/assets/js/5fdb73ab.037b8bc7.js                  |   1 +
 zh/assets/js/601c6eaa.7fe528ab.js                  |   1 +
 zh/assets/js/601c6eaa.87cb7f59.js                  |   1 -
 zh/assets/js/6073f1ae.a23af3f6.js                  |   1 -
 zh/assets/js/609eb2d9.9d2b147b.js                  |   1 +
 zh/assets/js/60f19d40.4a9b6a0b.js                  |   1 -
 zh/assets/js/6192341a.b28bf5a7.js                  |   1 +
 zh/assets/js/6192341a.fee36844.js                  |   1 -
 zh/assets/js/6327eb3b.f192589b.js                  |   1 -
 zh/assets/js/63751cfe.f4943d11.js                  |   1 -
 zh/assets/js/6433f4ff.107c05d9.js                  |   1 -
 zh/assets/js/657aec7e.d747167c.js                  |   1 -
 zh/assets/js/66fbb9c2.479b0cad.js                  |   1 +
 zh/assets/js/66fbb9c2.ee8fd79e.js                  |   1 -
 zh/assets/js/67c20baf.a10e9e31.js                  |   1 -
 zh/assets/js/68f3868d.715c1bda.js                  |   1 -
 zh/assets/js/6906be4c.668c2773.js                  |   1 -
 zh/assets/js/6a650005.83cc13e2.js                  |   1 +
 zh/assets/js/6d361364.09ddba2e.js                  |   1 -
 zh/assets/js/6da3feee.b7f9bff9.js                  |   1 +
 zh/assets/js/6da3feee.c4579dad.js                  |   1 -
 zh/assets/js/6e7eb4be.9f829a19.js                  |   1 +
 zh/assets/js/6f550950.b90d30cb.js                  |   1 -
 zh/assets/js/6ff59299.fd6d738c.js                  |   1 -
 zh/assets/js/710f644c.d55643ae.js                  |   1 -
 zh/assets/js/714c5e81.ae1f0680.js                  |   1 -
 zh/assets/js/719ce5ca.679818cf.js                  |   1 +
 zh/assets/js/720723c7.9c8ef104.js                  |   1 +
 zh/assets/js/72193d56.b1af107d.js                  |   1 +
 zh/assets/js/736b7d26.e5a32777.js                  |   1 -
 zh/assets/js/74718473.8ed9cdcd.js                  |   1 -
 zh/assets/js/749ed826.6c9afe27.js                  |   1 -
 zh/assets/js/763807fe.879002ce.js                  |   1 +
 zh/assets/js/76f6d484.8b4870cf.js                  |   1 +
 zh/assets/js/7716d3b8.6a75dc34.js                  |   1 -
 zh/assets/js/775372f1.78f633a2.js                  |   1 +
 zh/assets/js/77b5e1de.5ce9cc68.js                  |   1 -
 zh/assets/js/77b5e1de.d3090b85.js                  |   1 +
 zh/assets/js/79596895.04b22036.js                  |   1 +
 zh/assets/js/7ab111bb.1fe80ae4.js                  |   1 +
 zh/assets/js/7ac526b8.c1f67ea5.js                  |   1 +
 zh/assets/js/7af3052c.7c2d6467.js                  |   1 +
 zh/assets/js/7af3052c.d7469a27.js                  |   1 -
 zh/assets/js/7b4c8ed3.60f52754.js                  |   1 +
 zh/assets/js/7c2ba088.e6ba8a61.js                  |   1 +
 zh/assets/js/7cc0fccb.88a1ebed.js                  |   1 +
 zh/assets/js/7d40af2f.eff74e69.js                  |   1 +
 zh/assets/js/7e6925b5.29b9fc98.js                  |   1 -
 zh/assets/js/7eebf4a7.9cd1d759.js                  |   1 +
 zh/assets/js/80791de8.013a45ee.js                  |   1 +
 zh/assets/js/80791de8.2a65e3d8.js                  |   1 -
 zh/assets/js/8159971e.26220baf.js                  |   1 -
 zh/assets/js/82a29d85.a074f1df.js                  |   1 -
 zh/assets/js/82a750a3.5754533d.js                  |   1 +
 zh/assets/js/82a750a3.f26a9c9f.js                  |   1 -
 zh/assets/js/83edfd60.fb0029a2.js                  |   1 -
 zh/assets/js/84c0a4b7.f3149d27.js                  |   1 +
 zh/assets/js/87452a79.41cc8862.js                  |   1 -
 zh/assets/js/88ff165a.dfc97e3e.js                  |   1 +
 zh/assets/js/89542356.a1e900d8.js                  |   1 -
 zh/assets/js/8b5124ac.2844a46c.js                  |   1 -
 zh/assets/js/8b615e3b.39809d60.js                  |   1 +
 zh/assets/js/8ca3d5dc.e7cb1b91.js                  |   1 -
 zh/assets/js/8ca9cd18.6c74c113.js                  |   1 +
 zh/assets/js/8d3d7949.7216308c.js                  |   1 +
 zh/assets/js/8d8a65de.0b0d4f9e.js                  |   1 +
 zh/assets/js/8e784bf3.0de16f76.js                  |   1 -
 zh/assets/js/8e784bf3.c544fae5.js                  |   1 +
 zh/assets/js/8f147d6b.4d281798.js                  |   1 -
 zh/assets/js/8f700fa6.65d81bcf.js                  |   1 -
 zh/assets/js/8f700fa6.eb67242e.js                  |   1 +
 zh/assets/js/905ccf60.240093f7.js                  |   1 +
 zh/assets/js/90b96c10.2c1ba6ad.js                  |   1 -
 zh/assets/js/90b96c10.caba9620.js                  |   1 +
 zh/assets/js/90fc8a94.01d1356b.js                  |   1 -
 zh/assets/js/90fc8a94.5304b35a.js                  |   1 +
 zh/assets/js/925ecf48.b28d947e.js                  |   1 +
 zh/assets/js/927d70e2.31113dfa.js                  |   1 +
 zh/assets/js/927d70e2.322d6d60.js                  |   1 -
 zh/assets/js/9339ed5e.d35150a7.js                  |   1 +
 zh/assets/js/93ccf295.54288546.js                  |   1 +
 zh/assets/js/941960b1.02b2bb49.js                  |   1 +
 zh/assets/js/941960b1.10e3f867.js                  |   1 -
 zh/assets/js/94be536c.d83c937e.js                  |   1 +
 zh/assets/js/95058e22.e4a1324b.js                  |   1 +
 zh/assets/js/95058e22.ee496f7e.js                  |   1 -
 zh/assets/js/96e57280.ee54e68b.js                  |   1 -
 zh/assets/js/96ff6680.a5a56625.js                  |   1 -
 zh/assets/js/9ce0cdd0.97a08643.js                  |   1 -
 zh/assets/js/9e1badc6.4ba47e2a.js                  |   1 -
 zh/assets/js/9eeaf74f.2dbbec3d.js                  |   1 +
 zh/assets/js/9f0038ea.3184b29d.js                  |   1 +
 zh/assets/js/9fd3e231.0d7a4254.js                  |   1 +
 zh/assets/js/a06dfdd3.9dd25d9c.js                  |   1 -
 zh/assets/js/a0d74a5e.73d1a237.js                  |   1 -
 zh/assets/js/a3c1b03e.4ef267a8.js                  |   1 -
 zh/assets/js/a4a2cefa.28c0834e.js                  |   1 -
 zh/assets/js/a62ff6b0.5b817dab.js                  |   1 +
 zh/assets/js/a83a7665.ff25af79.js                  |   1 +
 zh/assets/js/adbb350b.550ff6b4.js                  |   1 -
 zh/assets/js/adbb350b.c3ca7aba.js                  |   1 +
 zh/assets/js/afbe2320.5a364960.js                  |   1 +
 zh/assets/js/b018535e.936c62c3.js                  |   1 +
 zh/assets/js/b0db5c35.c704fffd.js                  |   1 +
 zh/assets/js/b18a5acf.fa77fba7.js                  |   1 +
 zh/assets/js/b2413e78.d08abc78.js                  |   1 -
 zh/assets/js/b4186f86.67ff3de8.js                  |   1 -
 zh/assets/js/b46e4adf.1aad7fe2.js                  |   1 -
 zh/assets/js/b5f93f42.f24ca39e.js                  |   1 +
 zh/assets/js/b78a81d0.015550d9.js                  |   1 -
 zh/assets/js/b7ab9859.f0e88769.js                  |   1 +
 zh/assets/js/b7f1d279.ed480730.js                  |   1 -
 zh/assets/js/b9dc0898.253c339c.js                  |   1 -
 zh/assets/js/b9e5f19a.337406bf.js                  |   1 +
 zh/assets/js/bb158e42.6959efe6.js                  |   1 +
 zh/assets/js/bb86d006.ecaa8527.js                  |   1 -
 zh/assets/js/bb8a87fc.2b8dc2fe.js                  |   1 +
 zh/assets/js/bbc38881.649f1446.js                  |   1 +
 zh/assets/js/bc86acac.09b9be6b.js                  |   1 +
 zh/assets/js/bcead195.abbc9e32.js                  |   1 -
 zh/assets/js/bef75d89.be7a1b02.js                  |   1 -
 zh/assets/js/bf337c45.bbb79ec1.js                  |   1 -
 zh/assets/js/bfb0c60f.ae9d9d2a.js                  |   1 +
 zh/assets/js/bfb16af5.a99ccfc4.js                  |   1 +
 zh/assets/js/bfb16af5.d4bf9880.js                  |   1 -
 zh/assets/js/bfb26af8.2118ce2a.js                  |   1 -
 zh/assets/js/c2b989fb.f48fb073.js                  |   1 +
 zh/assets/js/c38a7190.2c7db471.js                  |   1 -
 zh/assets/js/c416f2d2.65f008b6.js                  |   1 -
 zh/assets/js/c56f5e51.c09257de.js                  |   1 -
 zh/assets/js/c6d71aec.a131afc9.js                  |   1 +
 zh/assets/js/c7553d68.be3e5d0b.js                  |   1 -
 zh/assets/js/c91fc2ea.7dddb0a4.js                  |   1 +
 zh/assets/js/c9238133.b64a2c9a.js                  |   1 +
 zh/assets/js/c9b449f4.eea49a41.js                  |   1 -
 zh/assets/js/c9fc40dc.be54d4ee.js                  |   1 +
 zh/assets/js/ccc9e164.0ca5247d.js                  |   1 -
 zh/assets/js/ccc9e164.3f1e9f0d.js                  |   1 +
 zh/assets/js/d00e343a.e854f467.js                  |   1 -
 zh/assets/js/d0957c89.f218ab81.js                  |   1 +
 zh/assets/js/d12570ed.149545f1.js                  |   1 +
 zh/assets/js/d14629a4.44055329.js                  |   1 -
 zh/assets/js/d14629a4.a87ae6d8.js                  |   1 +
 zh/assets/js/d18db9b0.19cf620d.js                  |   1 -
 zh/assets/js/d18db9b0.b1c7829d.js                  |   1 +
 zh/assets/js/d40661cf.1e3b9e7a.js                  |   1 +
 zh/assets/js/d491237a.f5ecb6dc.js                  |   1 +
 zh/assets/js/d4c2b493.6a6a7584.js                  |   1 +
 zh/assets/js/d6f03799.8925ad64.js                  |   1 -
 zh/assets/js/d713a29e.1d76f880.js                  |   1 -
 zh/assets/js/d842c49e.ebdbc75f.js                  |   1 -
 zh/assets/js/d8c73466.db924a49.js                  |   1 +
 zh/assets/js/d8ddfb32.28c41082.js                  |   1 -
 zh/assets/js/d9f294ca.850cc23c.js                  |   1 -
 zh/assets/js/dc10aa7a.c39aaa7c.js                  |   1 -
 zh/assets/js/dd48f954.d91bb52c.js                  |   1 -
 zh/assets/js/dde0bf3a.a270333b.js                  |   1 -
 zh/assets/js/deb68633.c02e8334.js                  |   1 +
 zh/assets/js/df0f9deb.1e8bf8c5.js                  |   1 -
 zh/assets/js/df72488e.2e5d808d.js                  |   1 -
 zh/assets/js/e02da2c5.1ea8b74e.js                  |   1 -
 zh/assets/js/e056ceac.97e76a4a.js                  |   1 -
 zh/assets/js/e0c9f2c6.6cb5a716.js                  |   1 +
 zh/assets/js/e1a3b18d.b9078000.js                  |   1 -
 zh/assets/js/e1aed840.071e7a27.js                  |   1 +
 zh/assets/js/e451ae2c.d5bb5ef2.js                  |   1 -
 zh/assets/js/e71302a4.e8be28e8.js                  |   1 -
 zh/assets/js/e94802f7.4f3e4a1a.js                  |   1 -
 zh/assets/js/ea06f8b4.98e508bf.js                  |   1 -
 zh/assets/js/eaa3fcd7.7a64cf2f.js                  |   1 -
 zh/assets/js/eaf65b9e.f090e552.js                  |   1 -
 zh/assets/js/ec5459af.6e7a3f1d.js                  |   1 +
 zh/assets/js/ec5459af.c7f4f1ff.js                  |   1 -
 zh/assets/js/edf4f599.106ef747.js                  |   1 +
 zh/assets/js/edf4f599.dbfa1066.js                  |   1 -
 zh/assets/js/ee408b19.81519c11.js                  |   1 +
 zh/assets/js/ef658648.10cc29a1.js                  |   1 +
 zh/assets/js/efa2485b.671e2ab6.js                  |   1 +
 zh/assets/js/f1020d56.3b612716.js                  |   1 -
 zh/assets/js/f4a80879.bdc823db.js                  |   1 -
 zh/assets/js/f58f276b.6de3bdf1.js                  |   1 +
 zh/assets/js/f60a5573.4e0dbf9a.js                  |   1 -
 zh/assets/js/f69d0ce6.afeb3f54.js                  |   1 +
 zh/assets/js/f773b7cd.49a4fa3e.js                  |   1 -
 zh/assets/js/f8686e54.2d9ff148.js                  |   1 -
 zh/assets/js/f92d4cb4.63f77ccc.js                  |   1 -
 zh/assets/js/f96d8335.2ab647d0.js                  |   1 -
 zh/assets/js/f9e7c729.7361742d.js                  |   1 +
 zh/assets/js/fa060a7c.cde8c86d.js                  |   1 +
 zh/assets/js/faa12a8e.57d2fb44.js                  |   1 +
 zh/assets/js/fabf1142.5ad160e8.js                  |   1 +
 zh/assets/js/facb7e12.cde76958.js                  |   1 -
 zh/assets/js/fb587670.a2046185.js                  |   1 -
 zh/assets/js/fcdebb59.fe7f2438.js                  |   1 +
 zh/assets/js/fd01d923.a22da024.js                  |   1 -
 zh/assets/js/fe44c230.6e8f1f14.js                  |   1 +
 zh/assets/js/fe44c230.954f9e44.js                  |   1 -
 zh/assets/js/fe97ace1.4fc4e8bd.js                  |   1 +
 zh/assets/js/main.c94995bf.js                      |   2 +
 .../assets/js/main.c94995bf.js.LICENSE.txt         |   0
 zh/assets/js/main.e7a16a26.js                      |   2 -
 zh/assets/js/runtime~main.4a53ad1e.js              |   1 -
 zh/assets/js/runtime~main.573ba49c.js              |   1 +
 .../index.html                                     |  10 +-
 .../index.html                                     |  30 --
 .../index.html                                     |  10 +-
 .../index.html                                     |  10 +-
 .../21/run-ingress-apisix-on-amazon-eks/index.html |  29 --
 .../index.html                                     |  28 --
 .../index.html                                     |  30 --
 .../index.html                                     |  28 --
 zh/blog/2021/05/24/Tencent-Games/index.html        |  10 +-
 .../index.html"                                    |   8 +-
 .../index.html                                     |   8 +-
 zh/blog/2021/06/06/apisix-two-years/index.html     |  12 +-
 .../index.html                                     |  28 --
 .../index.html                                     |  10 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../06/28/why-we-need-Apache-APISIX/index.html     |   8 +-
 .../06/29/release-apache-apisix-2.7-en/index.html  |  28 --
 .../06/29/release-apache-apisix-2.7/index.html     |  10 +-
 .../etcd3-support-HTTP-access-perfectly/index.html |  10 +-
 .../07/06/celebrate-200-contributors/index.html    |  30 --
 .../index.html                                     |  10 +-
 .../2021/07/21/Apache-APISIX-Kubernetes/index.html |   8 +-
 zh/blog/2021/07/25/apachecon-asia/index.html       |   8 +-
 .../index.html                                     |   8 +-
 .../07/28/release-apache-apisix-2.8-en/index.html  |  29 --
 .../07/28/release-apache-apisix-2.8/index.html     |  12 +-
 zh/blog/2021/08/05/Kong-to-APISIX/index.html       |  10 +-
 .../index.html                                     |   8 +-
 .../Apache-APISIX-in-China-Mobile-Cloud/index.html |   8 +-
 .../08/09/Apache-APISIX-in-Quliankeji/index.html   |   8 +-
 zh/blog/2021/08/10/apisix-nginx/index.html         |   8 +-
 .../2021/08/11/interview-TuZhengsong/index.html    |  10 +-
 .../index.html                                     |  28 --
 .../index.html                                     |  30 --
 .../index.html                                     |  10 +-
 .../index.html                                     |  33 --
 zh/blog/2021/08/17/interview-airwallex/index.html  |  10 +-
 .../Auth-with-Casbin-in-Apache-APISIX/index.html   |   8 +-
 .../08/19/go-makes-Apache-APISIX-better/index.html |   8 +-
 zh/blog/2021/08/19/weekly-report/index.html        |   8 +-
 zh/blog/2021/08/21/shanghai-meetup/index.html      |   8 +-
 zh/blog/2021/08/23/ApacheCon-Asia-2021/index.html  |   8 +-
 zh/blog/2021/08/23/weekly-report/index.html        |   8 +-
 .../2021/08/24/shanghai-meetup-recap/index.html    |   8 +-
 .../Auth-with-Casbin-in-Apache-APISIX/index.html   |  38 --
 .../index.html                                     |  10 +-
 .../index.html                                     |   8 +-
 .../08/27/release-apache-apisix-2.9-en/index.html  |   8 +-
 .../08/27/release-apache-apisix-2.9/index.html     |  12 +-
 zh/blog/2021/08/30/Ingress-Meeting/index.html      |   8 +-
 zh/blog/2021/08/30/weekly-report/index.html        |   8 +-
 .../index.html"                                    |   8 +-
 .../index.html                                     |   8 +-
 .../2021/09/07/how-to-use-apisix-auth/index.html   |   8 +-
 zh/blog/2021/09/07/iQIYI-usercase/index.html       |   8 +-
 .../index.html                                     |   8 +-
 .../09/13/china-mobile-cloud-usercase/index.html   |   8 +-
 zh/blog/2021/09/14/youzan/index.html               |   8 +-
 zh/blog/2021/09/15/weekly-report/index.html        |   8 +-
 zh/blog/2021/09/16/tencent-cloud/index.html        |   8 +-
 zh/blog/2021/09/18/xiaodian-usercase/index.html    |   8 +-
 zh/blog/2021/09/24/youpaicloud-usercase/index.html |   8 +-
 zh/blog/2021/09/28/WPS-usercase/index.html         |   8 +-
 .../09/29/release-apache-apisix-2.10-en/index.html |   8 +-
 .../09/29/release-apache-apisix-2.10/index.html    |   8 +-
 zh/blog/2021/09/30/weekly-report/index.html        |   8 +-
 zh/blog/2021/10/01/openEuler/index.html            |   8 +-
 zh/blog/archive/index.html                         |  10 +-
 zh/blog/atom.xml                                   | 142 ------
 zh/blog/index.html                                 |   8 +-
 zh/blog/page/2/index.html                          |  10 +-
 zh/blog/page/3/index.html                          |  10 +-
 zh/blog/page/4/index.html                          |  10 +-
 zh/blog/page/5/index.html                          |  10 +-
 zh/blog/page/6/index.html                          |  10 +-
 zh/blog/page/7/index.html                          |  28 --
 zh/blog/page/8/index.html                          |  28 --
 zh/blog/rss.xml                                    |  91 ----
 zh/blog/tags/community/index.html                  |  10 +-
 zh/blog/tags/events/index.html                     |  10 +-
 zh/blog/tags/index.html                            |  10 +-
 zh/blog/tags/interview/index.html                  |   8 +-
 zh/blog/tags/practical-case/index.html             |  10 +-
 zh/blog/tags/release/index.html                    |  10 +-
 zh/blog/tags/security/index.html                   |  10 +-
 zh/blog/tags/technology/index.html                 |  10 +-
 zh/blog/tags/user-case/index.html                  |   8 +-
 zh/docs/apisix/2.10.0/FAQ/index.html               |   8 +-
 zh/docs/apisix/2.10.0/IGNORE_DOC/index.html        |   8 +-
 zh/docs/apisix/2.10.0/admin-api/index.html         |   8 +-
 .../2.10.0/architecture-design/apisix/index.html   |   8 +-
 .../2.10.0/architecture-design/consumer/index.html |   8 +-
 .../architecture-design/debug-mode/index.html      |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.10.0/architecture-design/plugin/index.html   |   8 +-
 .../2.10.0/architecture-design/route/index.html    |   8 +-
 .../2.10.0/architecture-design/router/index.html   |   8 +-
 .../2.10.0/architecture-design/script/index.html   |   8 +-
 .../2.10.0/architecture-design/service/index.html  |   8 +-
 .../2.10.0/architecture-design/upstream/index.html |   8 +-
 zh/docs/apisix/2.10.0/aws/index.html               |   8 +-
 zh/docs/apisix/2.10.0/batch-processor/index.html   |   8 +-
 zh/docs/apisix/2.10.0/benchmark/index.html         |   8 +-
 zh/docs/apisix/2.10.0/certificate/index.html       |   8 +-
 zh/docs/apisix/2.10.0/control-api/index.html       |   8 +-
 .../customize-nginx-configuration/index.html       |   8 +-
 zh/docs/apisix/2.10.0/debug-function/index.html    |   8 +-
 .../apisix/2.10.0/discovery/consul_kv/index.html   |   8 +-
 zh/docs/apisix/2.10.0/discovery/dns/index.html     |   8 +-
 zh/docs/apisix/2.10.0/discovery/eureka/index.html  |   8 +-
 zh/docs/apisix/2.10.0/discovery/index.html         |   8 +-
 zh/docs/apisix/2.10.0/discovery/nacos/index.html   |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.10.0/external-plugin/index.html   |   8 +-
 zh/docs/apisix/2.10.0/getting-started/index.html   |   8 +-
 zh/docs/apisix/2.10.0/grpc-proxy/index.html        |   8 +-
 zh/docs/apisix/2.10.0/health-check/index.html      |   8 +-
 zh/docs/apisix/2.10.0/how-to-build/index.html      |   8 +-
 .../apisix/2.10.0/install-dependencies/index.html  |   8 +-
 .../2.10.0/internal/testing-framework/index.html   |   8 +-
 zh/docs/apisix/2.10.0/mtls/index.html              |   8 +-
 zh/docs/apisix/2.10.0/plugin-develop/index.html    |   8 +-
 .../apisix/2.10.0/plugin-interceptors/index.html   |   8 +-
 .../apisix/2.10.0/plugins/api-breaker/index.html   |   8 +-
 .../apisix/2.10.0/plugins/authz-casbin/index.html  |   8 +-
 .../2.10.0/plugins/authz-keycloak/index.html       |   8 +-
 .../apisix/2.10.0/plugins/basic-auth/index.html    |   8 +-
 .../2.10.0/plugins/batch-requests/index.html       |   8 +-
 .../2.10.0/plugins/client-control/index.html       |   8 +-
 .../2.10.0/plugins/consumer-restriction/index.html |   8 +-
 zh/docs/apisix/2.10.0/plugins/cors/index.html      |   8 +-
 .../apisix/2.10.0/plugins/dubbo-proxy/index.html   |   8 +-
 zh/docs/apisix/2.10.0/plugins/echo/index.html      |   8 +-
 .../2.10.0/plugins/error-log-logger/index.html     |   8 +-
 .../2.10.0/plugins/ext-plugin-post-req/index.html  |   8 +-
 .../2.10.0/plugins/ext-plugin-pre-req/index.html   |   8 +-
 .../2.10.0/plugins/fault-injection/index.html      |   8 +-
 .../2.10.0/plugins/grpc-transcode/index.html       |   8 +-
 zh/docs/apisix/2.10.0/plugins/gzip/index.html      |   8 +-
 zh/docs/apisix/2.10.0/plugins/hmac-auth/index.html |   8 +-
 .../apisix/2.10.0/plugins/http-logger/index.html   |   8 +-
 .../2.10.0/plugins/ip-restriction/index.html       |   8 +-
 zh/docs/apisix/2.10.0/plugins/jwt-auth/index.html  |   8 +-
 .../apisix/2.10.0/plugins/kafka-logger/index.html  |   8 +-
 zh/docs/apisix/2.10.0/plugins/key-auth/index.html  |   8 +-
 .../apisix/2.10.0/plugins/limit-conn/index.html    |   8 +-
 .../apisix/2.10.0/plugins/limit-count/index.html   |   8 +-
 zh/docs/apisix/2.10.0/plugins/limit-req/index.html |   8 +-
 .../apisix/2.10.0/plugins/log-rotate/index.html    |   8 +-
 .../apisix/2.10.0/plugins/mqtt-proxy/index.html    |   8 +-
 .../apisix/2.10.0/plugins/node-status/index.html   |   8 +-
 .../2.10.0/plugins/openid-connect/index.html       |   8 +-
 .../apisix/2.10.0/plugins/prometheus/index.html    |   8 +-
 .../apisix/2.10.0/plugins/proxy-cache/index.html   |   8 +-
 .../apisix/2.10.0/plugins/proxy-mirror/index.html  |   8 +-
 .../apisix/2.10.0/plugins/proxy-rewrite/index.html |   8 +-
 zh/docs/apisix/2.10.0/plugins/real-ip/index.html   |   8 +-
 zh/docs/apisix/2.10.0/plugins/redirect/index.html  |   8 +-
 .../2.10.0/plugins/referer-restriction/index.html  |   8 +-
 .../apisix/2.10.0/plugins/request-id/index.html    |   8 +-
 .../2.10.0/plugins/request-validation/index.html   |   8 +-
 .../2.10.0/plugins/response-rewrite/index.html     |   8 +-
 .../apisix/2.10.0/plugins/server-info/index.html   |   8 +-
 .../apisix/2.10.0/plugins/serverless/index.html    |   8 +-
 .../apisix/2.10.0/plugins/skywalking/index.html    |   8 +-
 .../apisix/2.10.0/plugins/sls-logger/index.html    |   8 +-
 zh/docs/apisix/2.10.0/plugins/syslog/index.html    |   8 +-
 .../apisix/2.10.0/plugins/tcp-logger/index.html    |   8 +-
 .../apisix/2.10.0/plugins/traffic-split/index.html |   8 +-
 .../2.10.0/plugins/ua-restriction/index.html       |   8 +-
 .../apisix/2.10.0/plugins/udp-logger/index.html    |   8 +-
 .../apisix/2.10.0/plugins/uri-blocker/index.html   |   8 +-
 zh/docs/apisix/2.10.0/plugins/wolf-rbac/index.html |   8 +-
 zh/docs/apisix/2.10.0/plugins/zipkin/index.html    |   8 +-
 zh/docs/apisix/2.10.0/profile/index.html           |   8 +-
 zh/docs/apisix/2.10.0/router-radixtree/index.html  |   8 +-
 zh/docs/apisix/2.10.0/stand-alone/index.html       |   8 +-
 zh/docs/apisix/2.10.0/stream-proxy/index.html      |   8 +-
 zh/docs/apisix/2.10.0/tags/index.html              |   8 +-
 zh/docs/apisix/2.4/FAQ/index.html                  |   8 +-
 zh/docs/apisix/2.4/IGNORE_DOC/index.html           |   8 +-
 zh/docs/apisix/2.4/admin-api/index.html            |   8 +-
 .../2.4/architecture-design/apisix/index.html      |   8 +-
 .../2.4/architecture-design/consumer/index.html    |   8 +-
 .../2.4/architecture-design/debug-mode/index.html  |   8 +-
 .../2.4/architecture-design/global-rule/index.html |   8 +-
 zh/docs/apisix/2.4/architecture-design/index.html  |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.4/architecture-design/plugin/index.html      |   8 +-
 .../2.4/architecture-design/route/index.html       |   8 +-
 .../2.4/architecture-design/router/index.html      |   8 +-
 .../2.4/architecture-design/script/index.html      |   8 +-
 .../2.4/architecture-design/service/index.html     |   8 +-
 .../2.4/architecture-design/upstream/index.html    |   8 +-
 zh/docs/apisix/2.4/aws/index.html                  |   8 +-
 zh/docs/apisix/2.4/batch-processor/index.html      |   8 +-
 zh/docs/apisix/2.4/benchmark/index.html            |   8 +-
 zh/docs/apisix/2.4/certificate/index.html          |   8 +-
 zh/docs/apisix/2.4/control-api/index.html          |   8 +-
 .../2.4/customize-nginx-configuration/index.html   |   8 +-
 zh/docs/apisix/2.4/debug-function/index.html       |   8 +-
 zh/docs/apisix/2.4/discovery/consul_kv/index.html  |   8 +-
 zh/docs/apisix/2.4/discovery/dns/index.html        |   8 +-
 zh/docs/apisix/2.4/discovery/eureka/index.html     |   8 +-
 zh/docs/apisix/2.4/discovery/index.html            |   8 +-
 zh/docs/apisix/2.4/discovery/nacos/index.html      |   8 +-
 zh/docs/apisix/2.4/dns/index.html                  |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.4/external-plugin/index.html      |   8 +-
 zh/docs/apisix/2.4/getting-started/index.html      |   8 +-
 zh/docs/apisix/2.4/grpc-proxy/index.html           |   8 +-
 zh/docs/apisix/2.4/health-check/index.html         |   8 +-
 zh/docs/apisix/2.4/how-to-build/index.html         |   8 +-
 zh/docs/apisix/2.4/https/index.html                |   8 +-
 zh/docs/apisix/2.4/install-dependencies/index.html |   8 +-
 .../2.4/internal/testing-framework/index.html      |   8 +-
 zh/docs/apisix/2.4/mtls/index.html                 |   8 +-
 zh/docs/apisix/2.4/plugin-develop/index.html       |   8 +-
 zh/docs/apisix/2.4/plugin-interceptors/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/api-breaker/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/authz-casbin/index.html |   8 +-
 .../apisix/2.4/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/basic-auth/index.html   |   8 +-
 .../apisix/2.4/plugins/batch-requests/index.html   |   8 +-
 .../apisix/2.4/plugins/client-control/index.html   |   8 +-
 .../2.4/plugins/consumer-restriction/index.html    |   8 +-
 zh/docs/apisix/2.4/plugins/cors/index.html         |   8 +-
 zh/docs/apisix/2.4/plugins/dubbo-proxy/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/echo/index.html         |   8 +-
 .../apisix/2.4/plugins/error-log-logger/index.html |   8 +-
 .../2.4/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.4/plugins/ext-plugin-pre-req/index.html      |   8 +-
 .../apisix/2.4/plugins/fault-injection/index.html  |   8 +-
 .../apisix/2.4/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/gzip/index.html         |   8 +-
 zh/docs/apisix/2.4/plugins/hmac-auth/index.html    |   8 +-
 zh/docs/apisix/2.4/plugins/http-logger/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/index.html              |   8 +-
 .../apisix/2.4/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/jwt-auth/index.html     |   8 +-
 zh/docs/apisix/2.4/plugins/kafka-logger/index.html |   8 +-
 zh/docs/apisix/2.4/plugins/key-auth/index.html     |   8 +-
 zh/docs/apisix/2.4/plugins/limit-conn/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/limit-count/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/limit-req/index.html    |   8 +-
 zh/docs/apisix/2.4/plugins/log-rotate/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/mqtt-proxy/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/node-status/index.html  |   8 +-
 .../apisix/2.4/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/prometheus/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/proxy-cache/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.4/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/2.4/plugins/real-ip/index.html      |   8 +-
 zh/docs/apisix/2.4/plugins/redirect/index.html     |   8 +-
 .../2.4/plugins/referer-restriction/index.html     |   8 +-
 zh/docs/apisix/2.4/plugins/request-id/index.html   |   8 +-
 .../2.4/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.4/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/2.4/plugins/server-info/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/serverless/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/skywalking/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/sls-logger/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/syslog/index.html       |   8 +-
 zh/docs/apisix/2.4/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.4/plugins/traffic-split/index.html    |   8 +-
 .../apisix/2.4/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/udp-logger/index.html   |   8 +-
 zh/docs/apisix/2.4/plugins/uri-blocker/index.html  |   8 +-
 zh/docs/apisix/2.4/plugins/wolf-rbac/index.html    |   8 +-
 zh/docs/apisix/2.4/plugins/zipkin/index.html       |   8 +-
 zh/docs/apisix/2.4/powered-by/index.html           |   8 +-
 zh/docs/apisix/2.4/profile/index.html              |   8 +-
 zh/docs/apisix/2.4/router-radixtree/index.html     |   8 +-
 zh/docs/apisix/2.4/stand-alone/index.html          |   8 +-
 zh/docs/apisix/2.4/stream-proxy/index.html         |   8 +-
 zh/docs/apisix/2.4/tags/index.html                 |   8 +-
 zh/docs/apisix/2.5/FAQ/index.html                  |   8 +-
 zh/docs/apisix/2.5/IGNORE_DOC/index.html           |   8 +-
 zh/docs/apisix/2.5/admin-api/index.html            |   8 +-
 .../2.5/architecture-design/apisix/index.html      |   8 +-
 .../2.5/architecture-design/consumer/index.html    |   8 +-
 .../2.5/architecture-design/debug-mode/index.html  |   8 +-
 .../2.5/architecture-design/global-rule/index.html |   8 +-
 zh/docs/apisix/2.5/architecture-design/index.html  |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.5/architecture-design/plugin/index.html      |   8 +-
 .../2.5/architecture-design/route/index.html       |   8 +-
 .../2.5/architecture-design/router/index.html      |   8 +-
 .../2.5/architecture-design/script/index.html      |   8 +-
 .../2.5/architecture-design/service/index.html     |   8 +-
 .../2.5/architecture-design/upstream/index.html    |   8 +-
 zh/docs/apisix/2.5/aws/index.html                  |   8 +-
 zh/docs/apisix/2.5/batch-processor/index.html      |   8 +-
 zh/docs/apisix/2.5/benchmark/index.html            |   8 +-
 zh/docs/apisix/2.5/certificate/index.html          |   8 +-
 zh/docs/apisix/2.5/control-api/index.html          |   8 +-
 .../2.5/customize-nginx-configuration/index.html   |   8 +-
 zh/docs/apisix/2.5/debug-function/index.html       |   8 +-
 zh/docs/apisix/2.5/discovery/consul_kv/index.html  |   8 +-
 zh/docs/apisix/2.5/discovery/dns/index.html        |   8 +-
 zh/docs/apisix/2.5/discovery/eureka/index.html     |   8 +-
 zh/docs/apisix/2.5/discovery/index.html            |   8 +-
 zh/docs/apisix/2.5/discovery/nacos/index.html      |   8 +-
 zh/docs/apisix/2.5/dns/index.html                  |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.5/external-plugin/index.html      |   8 +-
 zh/docs/apisix/2.5/getting-started/index.html      |   8 +-
 zh/docs/apisix/2.5/grpc-proxy/index.html           |   8 +-
 zh/docs/apisix/2.5/health-check/index.html         |   8 +-
 zh/docs/apisix/2.5/how-to-build/index.html         |   8 +-
 zh/docs/apisix/2.5/https/index.html                |   8 +-
 zh/docs/apisix/2.5/install-dependencies/index.html |   8 +-
 .../2.5/internal/testing-framework/index.html      |   8 +-
 zh/docs/apisix/2.5/mtls/index.html                 |   8 +-
 zh/docs/apisix/2.5/plugin-develop/index.html       |   8 +-
 zh/docs/apisix/2.5/plugin-interceptors/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/api-breaker/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/authz-casbin/index.html |   8 +-
 .../apisix/2.5/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/basic-auth/index.html   |   8 +-
 .../apisix/2.5/plugins/batch-requests/index.html   |   8 +-
 .../apisix/2.5/plugins/client-control/index.html   |   8 +-
 .../2.5/plugins/consumer-restriction/index.html    |   8 +-
 zh/docs/apisix/2.5/plugins/cors/index.html         |   8 +-
 zh/docs/apisix/2.5/plugins/dubbo-proxy/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/echo/index.html         |   8 +-
 .../apisix/2.5/plugins/error-log-logger/index.html |   8 +-
 .../2.5/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.5/plugins/ext-plugin-pre-req/index.html      |   8 +-
 .../apisix/2.5/plugins/fault-injection/index.html  |   8 +-
 .../apisix/2.5/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/gzip/index.html         |   8 +-
 zh/docs/apisix/2.5/plugins/hmac-auth/index.html    |   8 +-
 zh/docs/apisix/2.5/plugins/http-logger/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/index.html              |   8 +-
 .../apisix/2.5/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/jwt-auth/index.html     |   8 +-
 zh/docs/apisix/2.5/plugins/kafka-logger/index.html |   8 +-
 zh/docs/apisix/2.5/plugins/key-auth/index.html     |   8 +-
 zh/docs/apisix/2.5/plugins/limit-conn/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/limit-count/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/limit-req/index.html    |   8 +-
 zh/docs/apisix/2.5/plugins/log-rotate/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/mqtt-proxy/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/node-status/index.html  |   8 +-
 .../apisix/2.5/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/prometheus/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/proxy-cache/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.5/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/2.5/plugins/real-ip/index.html      |   8 +-
 zh/docs/apisix/2.5/plugins/redirect/index.html     |   8 +-
 .../2.5/plugins/referer-restriction/index.html     |   8 +-
 zh/docs/apisix/2.5/plugins/request-id/index.html   |   8 +-
 .../2.5/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.5/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/2.5/plugins/server-info/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/serverless/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/skywalking/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/sls-logger/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/syslog/index.html       |   8 +-
 zh/docs/apisix/2.5/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.5/plugins/traffic-split/index.html    |   8 +-
 .../apisix/2.5/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/udp-logger/index.html   |   8 +-
 zh/docs/apisix/2.5/plugins/uri-blocker/index.html  |   8 +-
 zh/docs/apisix/2.5/plugins/wolf-rbac/index.html    |   8 +-
 zh/docs/apisix/2.5/plugins/zipkin/index.html       |   8 +-
 zh/docs/apisix/2.5/powered-by/index.html           |   8 +-
 zh/docs/apisix/2.5/profile/index.html              |   8 +-
 zh/docs/apisix/2.5/router-radixtree/index.html     |   8 +-
 zh/docs/apisix/2.5/stand-alone/index.html          |   8 +-
 zh/docs/apisix/2.5/stream-proxy/index.html         |   8 +-
 zh/docs/apisix/2.5/tags/index.html                 |   8 +-
 zh/docs/apisix/2.6/FAQ/index.html                  |   8 +-
 zh/docs/apisix/2.6/IGNORE_DOC/index.html           |   8 +-
 zh/docs/apisix/2.6/admin-api/index.html            |   8 +-
 .../2.6/architecture-design/apisix/index.html      |   8 +-
 .../2.6/architecture-design/consumer/index.html    |   8 +-
 .../2.6/architecture-design/debug-mode/index.html  |   8 +-
 .../2.6/architecture-design/global-rule/index.html |   8 +-
 zh/docs/apisix/2.6/architecture-design/index.html  |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.6/architecture-design/plugin/index.html      |   8 +-
 .../2.6/architecture-design/route/index.html       |   8 +-
 .../2.6/architecture-design/router/index.html      |   8 +-
 .../2.6/architecture-design/script/index.html      |   8 +-
 .../2.6/architecture-design/service/index.html     |   8 +-
 .../2.6/architecture-design/upstream/index.html    |   8 +-
 zh/docs/apisix/2.6/aws/index.html                  |   8 +-
 zh/docs/apisix/2.6/batch-processor/index.html      |   8 +-
 zh/docs/apisix/2.6/benchmark/index.html            |   8 +-
 zh/docs/apisix/2.6/certificate/index.html          |   8 +-
 zh/docs/apisix/2.6/control-api/index.html          |   8 +-
 .../2.6/customize-nginx-configuration/index.html   |   8 +-
 zh/docs/apisix/2.6/debug-function/index.html       |   8 +-
 zh/docs/apisix/2.6/discovery/consul_kv/index.html  |   8 +-
 zh/docs/apisix/2.6/discovery/dns/index.html        |   8 +-
 zh/docs/apisix/2.6/discovery/eureka/index.html     |   8 +-
 zh/docs/apisix/2.6/discovery/index.html            |   8 +-
 zh/docs/apisix/2.6/discovery/nacos/index.html      |   8 +-
 zh/docs/apisix/2.6/dns/index.html                  |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.6/external-plugin/index.html      |   8 +-
 zh/docs/apisix/2.6/getting-started/index.html      |   8 +-
 zh/docs/apisix/2.6/grpc-proxy/index.html           |   8 +-
 zh/docs/apisix/2.6/health-check/index.html         |   8 +-
 zh/docs/apisix/2.6/how-to-build/index.html         |   8 +-
 zh/docs/apisix/2.6/https/index.html                |   8 +-
 zh/docs/apisix/2.6/install-dependencies/index.html |   8 +-
 .../2.6/internal/testing-framework/index.html      |   8 +-
 zh/docs/apisix/2.6/mtls/index.html                 |   8 +-
 zh/docs/apisix/2.6/plugin-develop/index.html       |   8 +-
 zh/docs/apisix/2.6/plugin-interceptors/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/api-breaker/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/authz-casbin/index.html |   8 +-
 .../apisix/2.6/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/basic-auth/index.html   |   8 +-
 .../apisix/2.6/plugins/batch-requests/index.html   |   8 +-
 .../apisix/2.6/plugins/client-control/index.html   |   8 +-
 .../2.6/plugins/consumer-restriction/index.html    |   8 +-
 zh/docs/apisix/2.6/plugins/cors/index.html         |   8 +-
 zh/docs/apisix/2.6/plugins/dubbo-proxy/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/echo/index.html         |   8 +-
 .../apisix/2.6/plugins/error-log-logger/index.html |   8 +-
 .../2.6/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.6/plugins/ext-plugin-pre-req/index.html      |   8 +-
 .../apisix/2.6/plugins/fault-injection/index.html  |   8 +-
 .../apisix/2.6/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/gzip/index.html         |   8 +-
 zh/docs/apisix/2.6/plugins/hmac-auth/index.html    |   8 +-
 zh/docs/apisix/2.6/plugins/http-logger/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/index.html              |   8 +-
 .../apisix/2.6/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/jwt-auth/index.html     |   8 +-
 zh/docs/apisix/2.6/plugins/kafka-logger/index.html |   8 +-
 zh/docs/apisix/2.6/plugins/key-auth/index.html     |   8 +-
 zh/docs/apisix/2.6/plugins/limit-conn/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/limit-count/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/limit-req/index.html    |   8 +-
 zh/docs/apisix/2.6/plugins/log-rotate/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/mqtt-proxy/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/node-status/index.html  |   8 +-
 .../apisix/2.6/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/prometheus/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/proxy-cache/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.6/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/2.6/plugins/real-ip/index.html      |   8 +-
 zh/docs/apisix/2.6/plugins/redirect/index.html     |   8 +-
 .../2.6/plugins/referer-restriction/index.html     |   8 +-
 zh/docs/apisix/2.6/plugins/request-id/index.html   |   8 +-
 .../2.6/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.6/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/2.6/plugins/server-info/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/serverless/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/skywalking/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/sls-logger/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/syslog/index.html       |   8 +-
 zh/docs/apisix/2.6/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.6/plugins/traffic-split/index.html    |   8 +-
 .../apisix/2.6/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/udp-logger/index.html   |   8 +-
 zh/docs/apisix/2.6/plugins/uri-blocker/index.html  |   8 +-
 zh/docs/apisix/2.6/plugins/wolf-rbac/index.html    |   8 +-
 zh/docs/apisix/2.6/plugins/zipkin/index.html       |   8 +-
 zh/docs/apisix/2.6/powered-by/index.html           |   8 +-
 zh/docs/apisix/2.6/profile/index.html              |   8 +-
 zh/docs/apisix/2.6/router-radixtree/index.html     |   8 +-
 zh/docs/apisix/2.6/stand-alone/index.html          |   8 +-
 zh/docs/apisix/2.6/stream-proxy/index.html         |   8 +-
 zh/docs/apisix/2.6/tags/index.html                 |   8 +-
 zh/docs/apisix/2.7/FAQ/index.html                  |   8 +-
 zh/docs/apisix/2.7/IGNORE_DOC/index.html           |   8 +-
 zh/docs/apisix/2.7/admin-api/index.html            |   8 +-
 .../2.7/architecture-design/apisix/index.html      |   8 +-
 .../2.7/architecture-design/consumer/index.html    |   8 +-
 .../2.7/architecture-design/debug-mode/index.html  |   8 +-
 .../2.7/architecture-design/global-rule/index.html |   8 +-
 zh/docs/apisix/2.7/architecture-design/index.html  |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.7/architecture-design/plugin/index.html      |   8 +-
 .../2.7/architecture-design/route/index.html       |   8 +-
 .../2.7/architecture-design/router/index.html      |   8 +-
 .../2.7/architecture-design/script/index.html      |   8 +-
 .../2.7/architecture-design/service/index.html     |   8 +-
 .../2.7/architecture-design/upstream/index.html    |   8 +-
 zh/docs/apisix/2.7/aws/index.html                  |   8 +-
 zh/docs/apisix/2.7/batch-processor/index.html      |   8 +-
 zh/docs/apisix/2.7/benchmark/index.html            |   8 +-
 zh/docs/apisix/2.7/certificate/index.html          |   8 +-
 zh/docs/apisix/2.7/control-api/index.html          |   8 +-
 .../2.7/customize-nginx-configuration/index.html   |   8 +-
 zh/docs/apisix/2.7/debug-function/index.html       |   8 +-
 zh/docs/apisix/2.7/discovery/consul_kv/index.html  |   8 +-
 zh/docs/apisix/2.7/discovery/dns/index.html        |   8 +-
 zh/docs/apisix/2.7/discovery/eureka/index.html     |   8 +-
 zh/docs/apisix/2.7/discovery/index.html            |   8 +-
 zh/docs/apisix/2.7/discovery/nacos/index.html      |   8 +-
 zh/docs/apisix/2.7/dns/index.html                  |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.7/external-plugin/index.html      |   8 +-
 zh/docs/apisix/2.7/getting-started/index.html      |   8 +-
 zh/docs/apisix/2.7/grpc-proxy/index.html           |   8 +-
 zh/docs/apisix/2.7/health-check/index.html         |   8 +-
 zh/docs/apisix/2.7/how-to-build/index.html         |   8 +-
 zh/docs/apisix/2.7/https/index.html                |   8 +-
 zh/docs/apisix/2.7/install-dependencies/index.html |   8 +-
 .../2.7/internal/testing-framework/index.html      |   8 +-
 zh/docs/apisix/2.7/mtls/index.html                 |   8 +-
 zh/docs/apisix/2.7/plugin-develop/index.html       |   8 +-
 zh/docs/apisix/2.7/plugin-interceptors/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/api-breaker/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/authz-casbin/index.html |   8 +-
 .../apisix/2.7/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/basic-auth/index.html   |   8 +-
 .../apisix/2.7/plugins/batch-requests/index.html   |   8 +-
 .../apisix/2.7/plugins/client-control/index.html   |   8 +-
 .../2.7/plugins/consumer-restriction/index.html    |   8 +-
 zh/docs/apisix/2.7/plugins/cors/index.html         |   8 +-
 zh/docs/apisix/2.7/plugins/dubbo-proxy/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/echo/index.html         |   8 +-
 .../apisix/2.7/plugins/error-log-logger/index.html |   8 +-
 .../2.7/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.7/plugins/ext-plugin-pre-req/index.html      |   8 +-
 .../apisix/2.7/plugins/fault-injection/index.html  |   8 +-
 .../apisix/2.7/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/gzip/index.html         |   8 +-
 zh/docs/apisix/2.7/plugins/hmac-auth/index.html    |   8 +-
 zh/docs/apisix/2.7/plugins/http-logger/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/index.html              |   8 +-
 .../apisix/2.7/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/jwt-auth/index.html     |   8 +-
 zh/docs/apisix/2.7/plugins/kafka-logger/index.html |   8 +-
 zh/docs/apisix/2.7/plugins/key-auth/index.html     |   8 +-
 zh/docs/apisix/2.7/plugins/limit-conn/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/limit-count/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/limit-req/index.html    |   8 +-
 zh/docs/apisix/2.7/plugins/log-rotate/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/mqtt-proxy/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/node-status/index.html  |   8 +-
 .../apisix/2.7/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/prometheus/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/proxy-cache/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.7/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/2.7/plugins/real-ip/index.html      |   8 +-
 zh/docs/apisix/2.7/plugins/redirect/index.html     |   8 +-
 .../2.7/plugins/referer-restriction/index.html     |   8 +-
 zh/docs/apisix/2.7/plugins/request-id/index.html   |   8 +-
 .../2.7/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.7/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/2.7/plugins/server-info/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/serverless/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/skywalking/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/sls-logger/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/syslog/index.html       |   8 +-
 zh/docs/apisix/2.7/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.7/plugins/traffic-split/index.html    |   8 +-
 .../apisix/2.7/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/udp-logger/index.html   |   8 +-
 zh/docs/apisix/2.7/plugins/uri-blocker/index.html  |   8 +-
 zh/docs/apisix/2.7/plugins/wolf-rbac/index.html    |   8 +-
 zh/docs/apisix/2.7/plugins/zipkin/index.html       |   8 +-
 zh/docs/apisix/2.7/powered-by/index.html           |   8 +-
 zh/docs/apisix/2.7/profile/index.html              |   8 +-
 zh/docs/apisix/2.7/router-radixtree/index.html     |   8 +-
 zh/docs/apisix/2.7/stand-alone/index.html          |   8 +-
 zh/docs/apisix/2.7/stream-proxy/index.html         |   8 +-
 zh/docs/apisix/2.7/tags/index.html                 |   8 +-
 zh/docs/apisix/2.8/FAQ/index.html                  |   8 +-
 zh/docs/apisix/2.8/IGNORE_DOC/index.html           |   8 +-
 zh/docs/apisix/2.8/admin-api/index.html            |   8 +-
 .../2.8/architecture-design/apisix/index.html      |   8 +-
 .../2.8/architecture-design/consumer/index.html    |   8 +-
 .../2.8/architecture-design/debug-mode/index.html  |   8 +-
 .../2.8/architecture-design/global-rule/index.html |   8 +-
 zh/docs/apisix/2.8/architecture-design/index.html  |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../2.8/architecture-design/plugin/index.html      |   8 +-
 .../2.8/architecture-design/route/index.html       |   8 +-
 .../2.8/architecture-design/router/index.html      |   8 +-
 .../2.8/architecture-design/script/index.html      |   8 +-
 .../2.8/architecture-design/service/index.html     |   8 +-
 .../2.8/architecture-design/upstream/index.html    |   8 +-
 zh/docs/apisix/2.8/aws/index.html                  |   8 +-
 zh/docs/apisix/2.8/batch-processor/index.html      |   8 +-
 zh/docs/apisix/2.8/benchmark/index.html            |   8 +-
 zh/docs/apisix/2.8/certificate/index.html          |   8 +-
 zh/docs/apisix/2.8/control-api/index.html          |   8 +-
 .../2.8/customize-nginx-configuration/index.html   |   8 +-
 zh/docs/apisix/2.8/debug-function/index.html       |   8 +-
 zh/docs/apisix/2.8/discovery/consul_kv/index.html  |   8 +-
 zh/docs/apisix/2.8/discovery/dns/index.html        |   8 +-
 zh/docs/apisix/2.8/discovery/eureka/index.html     |   8 +-
 zh/docs/apisix/2.8/discovery/index.html            |   8 +-
 zh/docs/apisix/2.8/discovery/nacos/index.html      |   8 +-
 zh/docs/apisix/2.8/dns/index.html                  |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/2.8/external-plugin/index.html      |   8 +-
 zh/docs/apisix/2.8/getting-started/index.html      |   8 +-
 zh/docs/apisix/2.8/grpc-proxy/index.html           |   8 +-
 zh/docs/apisix/2.8/health-check/index.html         |   8 +-
 zh/docs/apisix/2.8/how-to-build/index.html         |   8 +-
 zh/docs/apisix/2.8/https/index.html                |   8 +-
 zh/docs/apisix/2.8/install-dependencies/index.html |   8 +-
 .../2.8/internal/testing-framework/index.html      |   8 +-
 zh/docs/apisix/2.8/mtls/index.html                 |   8 +-
 zh/docs/apisix/2.8/plugin-develop/index.html       |   8 +-
 zh/docs/apisix/2.8/plugin-interceptors/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/api-breaker/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/authz-casbin/index.html |   8 +-
 .../apisix/2.8/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/basic-auth/index.html   |   8 +-
 .../apisix/2.8/plugins/batch-requests/index.html   |   8 +-
 .../apisix/2.8/plugins/client-control/index.html   |   8 +-
 .../2.8/plugins/consumer-restriction/index.html    |   8 +-
 zh/docs/apisix/2.8/plugins/cors/index.html         |   8 +-
 zh/docs/apisix/2.8/plugins/dubbo-proxy/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/echo/index.html         |   8 +-
 .../apisix/2.8/plugins/error-log-logger/index.html |   8 +-
 .../2.8/plugins/ext-plugin-post-req/index.html     |   8 +-
 .../2.8/plugins/ext-plugin-pre-req/index.html      |   8 +-
 .../apisix/2.8/plugins/fault-injection/index.html  |   8 +-
 .../apisix/2.8/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/gzip/index.html         |   8 +-
 zh/docs/apisix/2.8/plugins/hmac-auth/index.html    |   8 +-
 zh/docs/apisix/2.8/plugins/http-logger/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/index.html              |   8 +-
 .../apisix/2.8/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/jwt-auth/index.html     |   8 +-
 zh/docs/apisix/2.8/plugins/kafka-logger/index.html |   8 +-
 zh/docs/apisix/2.8/plugins/key-auth/index.html     |   8 +-
 zh/docs/apisix/2.8/plugins/limit-conn/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/limit-count/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/limit-req/index.html    |   8 +-
 zh/docs/apisix/2.8/plugins/log-rotate/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/mqtt-proxy/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/node-status/index.html  |   8 +-
 .../apisix/2.8/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/prometheus/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/proxy-cache/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/proxy-mirror/index.html |   8 +-
 .../apisix/2.8/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/2.8/plugins/real-ip/index.html      |   8 +-
 zh/docs/apisix/2.8/plugins/redirect/index.html     |   8 +-
 .../2.8/plugins/referer-restriction/index.html     |   8 +-
 zh/docs/apisix/2.8/plugins/request-id/index.html   |   8 +-
 .../2.8/plugins/request-validation/index.html      |   8 +-
 .../apisix/2.8/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/2.8/plugins/server-info/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/serverless/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/skywalking/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/sls-logger/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/syslog/index.html       |   8 +-
 zh/docs/apisix/2.8/plugins/tcp-logger/index.html   |   8 +-
 .../apisix/2.8/plugins/traffic-split/index.html    |   8 +-
 .../apisix/2.8/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/udp-logger/index.html   |   8 +-
 zh/docs/apisix/2.8/plugins/uri-blocker/index.html  |   8 +-
 zh/docs/apisix/2.8/plugins/wolf-rbac/index.html    |   8 +-
 zh/docs/apisix/2.8/plugins/zipkin/index.html       |   8 +-
 zh/docs/apisix/2.8/powered-by/index.html           |   8 +-
 zh/docs/apisix/2.8/profile/index.html              |   8 +-
 zh/docs/apisix/2.8/router-radixtree/index.html     |   8 +-
 zh/docs/apisix/2.8/stand-alone/index.html          |   8 +-
 zh/docs/apisix/2.8/stream-proxy/index.html         |   8 +-
 zh/docs/apisix/2.8/tags/index.html                 |   8 +-
 zh/docs/apisix/FAQ/index.html                      |   8 +-
 zh/docs/apisix/IGNORE_DOC/index.html               |   8 +-
 zh/docs/apisix/admin-api/index.html                |   8 +-
 .../apisix/architecture-design/apisix/index.html   |   8 +-
 .../apisix/architecture-design/consumer/index.html |   8 +-
 .../architecture-design/debug-mode/index.html      |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 zh/docs/apisix/architecture-design/index.html      |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../apisix/architecture-design/plugin/index.html   |   8 +-
 .../apisix/architecture-design/route/index.html    |   8 +-
 .../apisix/architecture-design/router/index.html   |   8 +-
 .../apisix/architecture-design/script/index.html   |   8 +-
 .../apisix/architecture-design/service/index.html  |   8 +-
 .../apisix/architecture-design/upstream/index.html |   8 +-
 zh/docs/apisix/aws/index.html                      |   8 +-
 zh/docs/apisix/batch-processor/index.html          |   8 +-
 zh/docs/apisix/benchmark/index.html                |   8 +-
 zh/docs/apisix/certificate/index.html              |   8 +-
 zh/docs/apisix/control-api/index.html              |   8 +-
 .../customize-nginx-configuration/index.html       |   8 +-
 zh/docs/apisix/debug-function/index.html           |   8 +-
 zh/docs/apisix/discovery/consul_kv/index.html      |   8 +-
 zh/docs/apisix/discovery/dns/index.html            |   8 +-
 zh/docs/apisix/discovery/eureka/index.html         |   8 +-
 zh/docs/apisix/discovery/index.html                |   8 +-
 zh/docs/apisix/discovery/nacos/index.html          |   8 +-
 zh/docs/apisix/dns/index.html                      |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/external-plugin/index.html          |   8 +-
 zh/docs/apisix/getting-started/index.html          |   8 +-
 zh/docs/apisix/grpc-proxy/index.html               |   8 +-
 zh/docs/apisix/health-check/index.html             |   8 +-
 zh/docs/apisix/how-to-build/index.html             |   8 +-
 zh/docs/apisix/https/index.html                    |   8 +-
 zh/docs/apisix/install-dependencies/index.html     |   8 +-
 .../apisix/internal/testing-framework/index.html   |   8 +-
 zh/docs/apisix/mtls/index.html                     |   8 +-
 zh/docs/apisix/next/FAQ/index.html                 |   8 +-
 zh/docs/apisix/next/IGNORE_DOC/index.html          |  10 +-
 zh/docs/apisix/next/admin-api/index.html           |   8 +-
 .../next/architecture-design/apisix/index.html     |   8 +-
 .../next/architecture-design/consumer/index.html   |   8 +-
 .../next/architecture-design/debug-mode/index.html |   8 +-
 .../architecture-design/global-rule/index.html     |   8 +-
 zh/docs/apisix/next/architecture-design/index.html |   8 +-
 .../architecture-design/plugin-config/index.html   |   8 +-
 .../next/architecture-design/plugin/index.html     |   8 +-
 .../next/architecture-design/route/index.html      |   8 +-
 .../next/architecture-design/router/index.html     |   8 +-
 .../next/architecture-design/script/index.html     |   8 +-
 .../next/architecture-design/service/index.html    |   8 +-
 .../next/architecture-design/upstream/index.html   |   8 +-
 zh/docs/apisix/next/aws/index.html                 |   8 +-
 zh/docs/apisix/next/batch-processor/index.html     |   8 +-
 zh/docs/apisix/next/benchmark/index.html           |   8 +-
 zh/docs/apisix/next/certificate/index.html         |   8 +-
 zh/docs/apisix/next/control-api/index.html         |   8 +-
 .../next/customize-nginx-configuration/index.html  |   8 +-
 zh/docs/apisix/next/debug-function/index.html      |   8 +-
 zh/docs/apisix/next/discovery/consul_kv/index.html |   8 +-
 zh/docs/apisix/next/discovery/dns/index.html       |   8 +-
 zh/docs/apisix/next/discovery/eureka/index.html    |   8 +-
 zh/docs/apisix/next/discovery/index.html           |   8 +-
 zh/docs/apisix/next/discovery/nacos/index.html     |   8 +-
 zh/docs/apisix/next/dns/index.html                 |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/apisix/next/external-plugin/index.html     |   8 +-
 zh/docs/apisix/next/getting-started/index.html     |   8 +-
 zh/docs/apisix/next/grpc-proxy/index.html          |   8 +-
 zh/docs/apisix/next/health-check/index.html        |   8 +-
 zh/docs/apisix/next/how-to-build/index.html        |   8 +-
 zh/docs/apisix/next/https/index.html               |   8 +-
 .../apisix/next/install-dependencies/index.html    |   8 +-
 .../next/internal/testing-framework/index.html     |   8 +-
 zh/docs/apisix/next/mtls/index.html                |   8 +-
 zh/docs/apisix/next/plugin-develop/index.html      |   8 +-
 zh/docs/apisix/next/plugin-interceptors/index.html |   8 +-
 zh/docs/apisix/next/plugins/api-breaker/index.html |   8 +-
 .../apisix/next/plugins/authz-casbin/index.html    |   8 +-
 .../apisix/next/plugins/authz-keycloak/index.html  |   8 +-
 zh/docs/apisix/next/plugins/basic-auth/index.html  |   8 +-
 .../apisix/next/plugins/batch-requests/index.html  |   8 +-
 .../apisix/next/plugins/client-control/index.html  |   8 +-
 .../next/plugins/consumer-restriction/index.html   |   8 +-
 zh/docs/apisix/next/plugins/cors/index.html        |   8 +-
 zh/docs/apisix/next/plugins/dubbo-proxy/index.html |   8 +-
 zh/docs/apisix/next/plugins/echo/index.html        |   8 +-
 .../next/plugins/error-log-logger/index.html       |   8 +-
 .../next/plugins/ext-plugin-post-req/index.html    |   8 +-
 .../next/plugins/ext-plugin-pre-req/index.html     |   8 +-
 .../apisix/next/plugins/fault-injection/index.html |   8 +-
 .../apisix/next/plugins/grpc-transcode/index.html  |   8 +-
 zh/docs/apisix/next/plugins/gzip/index.html        |   8 +-
 zh/docs/apisix/next/plugins/hmac-auth/index.html   |   8 +-
 zh/docs/apisix/next/plugins/http-logger/index.html |   8 +-
 zh/docs/apisix/next/plugins/index.html             |   8 +-
 .../apisix/next/plugins/ip-restriction/index.html  |   8 +-
 zh/docs/apisix/next/plugins/jwt-auth/index.html    |   8 +-
 .../apisix/next/plugins/kafka-logger/index.html    |   8 +-
 zh/docs/apisix/next/plugins/key-auth/index.html    |   8 +-
 zh/docs/apisix/next/plugins/limit-conn/index.html  |   8 +-
 zh/docs/apisix/next/plugins/limit-count/index.html |   8 +-
 zh/docs/apisix/next/plugins/limit-req/index.html   |   8 +-
 zh/docs/apisix/next/plugins/log-rotate/index.html  |   8 +-
 zh/docs/apisix/next/plugins/mqtt-proxy/index.html  |   8 +-
 zh/docs/apisix/next/plugins/node-status/index.html |   8 +-
 .../apisix/next/plugins/openid-connect/index.html  |   8 +-
 zh/docs/apisix/next/plugins/prometheus/index.html  |   8 +-
 zh/docs/apisix/next/plugins/proxy-cache/index.html |   8 +-
 .../apisix/next/plugins/proxy-mirror/index.html    |   8 +-
 .../apisix/next/plugins/proxy-rewrite/index.html   |   8 +-
 zh/docs/apisix/next/plugins/real-ip/index.html     |   8 +-
 zh/docs/apisix/next/plugins/redirect/index.html    |   8 +-
 .../next/plugins/referer-restriction/index.html    |   8 +-
 zh/docs/apisix/next/plugins/request-id/index.html  |   8 +-
 .../next/plugins/request-validation/index.html     |   8 +-
 .../next/plugins/response-rewrite/index.html       |   8 +-
 zh/docs/apisix/next/plugins/server-info/index.html |   8 +-
 zh/docs/apisix/next/plugins/serverless/index.html  |   8 +-
 zh/docs/apisix/next/plugins/skywalking/index.html  |   8 +-
 zh/docs/apisix/next/plugins/sls-logger/index.html  |   8 +-
 zh/docs/apisix/next/plugins/syslog/index.html      |   8 +-
 zh/docs/apisix/next/plugins/tcp-logger/index.html  |   8 +-
 .../apisix/next/plugins/traffic-split/index.html   |   8 +-
 .../apisix/next/plugins/ua-restriction/index.html  |   8 +-
 zh/docs/apisix/next/plugins/udp-logger/index.html  |   8 +-
 zh/docs/apisix/next/plugins/uri-blocker/index.html |   8 +-
 zh/docs/apisix/next/plugins/wolf-rbac/index.html   |   8 +-
 zh/docs/apisix/next/plugins/zipkin/index.html      |   8 +-
 zh/docs/apisix/next/powered-by/index.html          |   8 +-
 zh/docs/apisix/next/profile/index.html             |   8 +-
 zh/docs/apisix/next/router-radixtree/index.html    |   8 +-
 zh/docs/apisix/next/stand-alone/index.html         |   8 +-
 zh/docs/apisix/next/stream-proxy/index.html        |   8 +-
 zh/docs/apisix/next/tags/index.html                |   8 +-
 zh/docs/apisix/plugin-develop/index.html           |   8 +-
 zh/docs/apisix/plugin-interceptors/index.html      |   8 +-
 zh/docs/apisix/plugins/api-breaker/index.html      |   8 +-
 zh/docs/apisix/plugins/authz-casbin/index.html     |   8 +-
 zh/docs/apisix/plugins/authz-keycloak/index.html   |   8 +-
 zh/docs/apisix/plugins/basic-auth/index.html       |   8 +-
 zh/docs/apisix/plugins/batch-requests/index.html   |   8 +-
 zh/docs/apisix/plugins/client-control/index.html   |   8 +-
 .../apisix/plugins/consumer-restriction/index.html |   8 +-
 zh/docs/apisix/plugins/cors/index.html             |   8 +-
 zh/docs/apisix/plugins/dubbo-proxy/index.html      |   8 +-
 zh/docs/apisix/plugins/echo/index.html             |   8 +-
 zh/docs/apisix/plugins/error-log-logger/index.html |   8 +-
 .../apisix/plugins/ext-plugin-post-req/index.html  |   8 +-
 .../apisix/plugins/ext-plugin-pre-req/index.html   |   8 +-
 zh/docs/apisix/plugins/fault-injection/index.html  |   8 +-
 zh/docs/apisix/plugins/grpc-transcode/index.html   |   8 +-
 zh/docs/apisix/plugins/gzip/index.html             |   8 +-
 zh/docs/apisix/plugins/hmac-auth/index.html        |   8 +-
 zh/docs/apisix/plugins/http-logger/index.html      |   8 +-
 zh/docs/apisix/plugins/index.html                  |   8 +-
 zh/docs/apisix/plugins/ip-restriction/index.html   |   8 +-
 zh/docs/apisix/plugins/jwt-auth/index.html         |   8 +-
 zh/docs/apisix/plugins/kafka-logger/index.html     |   8 +-
 zh/docs/apisix/plugins/key-auth/index.html         |   8 +-
 zh/docs/apisix/plugins/limit-conn/index.html       |   8 +-
 zh/docs/apisix/plugins/limit-count/index.html      |   8 +-
 zh/docs/apisix/plugins/limit-req/index.html        |   8 +-
 zh/docs/apisix/plugins/log-rotate/index.html       |   8 +-
 zh/docs/apisix/plugins/mqtt-proxy/index.html       |   8 +-
 zh/docs/apisix/plugins/node-status/index.html      |   8 +-
 zh/docs/apisix/plugins/openid-connect/index.html   |   8 +-
 zh/docs/apisix/plugins/prometheus/index.html       |   8 +-
 zh/docs/apisix/plugins/proxy-cache/index.html      |   8 +-
 zh/docs/apisix/plugins/proxy-mirror/index.html     |   8 +-
 zh/docs/apisix/plugins/proxy-rewrite/index.html    |   8 +-
 zh/docs/apisix/plugins/real-ip/index.html          |   8 +-
 zh/docs/apisix/plugins/redirect/index.html         |   8 +-
 .../apisix/plugins/referer-restriction/index.html  |   8 +-
 zh/docs/apisix/plugins/request-id/index.html       |   8 +-
 .../apisix/plugins/request-validation/index.html   |   8 +-
 zh/docs/apisix/plugins/response-rewrite/index.html |   8 +-
 zh/docs/apisix/plugins/server-info/index.html      |   8 +-
 zh/docs/apisix/plugins/serverless/index.html       |   8 +-
 zh/docs/apisix/plugins/skywalking/index.html       |   8 +-
 zh/docs/apisix/plugins/sls-logger/index.html       |   8 +-
 zh/docs/apisix/plugins/syslog/index.html           |   8 +-
 zh/docs/apisix/plugins/tcp-logger/index.html       |   8 +-
 zh/docs/apisix/plugins/traffic-split/index.html    |   8 +-
 zh/docs/apisix/plugins/ua-restriction/index.html   |   8 +-
 zh/docs/apisix/plugins/udp-logger/index.html       |   8 +-
 zh/docs/apisix/plugins/uri-blocker/index.html      |   8 +-
 zh/docs/apisix/plugins/wolf-rbac/index.html        |   8 +-
 zh/docs/apisix/plugins/zipkin/index.html           |   8 +-
 zh/docs/apisix/powered-by/index.html               |   8 +-
 zh/docs/apisix/profile/index.html                  |   8 +-
 zh/docs/apisix/router-radixtree/index.html         |   8 +-
 zh/docs/apisix/stand-alone/index.html              |   8 +-
 zh/docs/apisix/stream-proxy/index.html             |   8 +-
 zh/docs/apisix/tags/index.html                     |   8 +-
 zh/docs/dashboard/2.5/FAQ/index.html               |   8 +-
 zh/docs/dashboard/2.5/I18N_USER_GUIDE/index.html   |   8 +-
 zh/docs/dashboard/2.5/IGNORE_DOC/index.html        |   8 +-
 .../2.5/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 zh/docs/dashboard/2.5/USER_GUIDE/index.html        |   8 +-
 zh/docs/dashboard/2.5/api/api/index.html           |   8 +-
 zh/docs/dashboard/2.5/back-end-tests/index.html    |   8 +-
 .../dashboard/2.5/deploy-with-docker/index.html    |   8 +-
 zh/docs/dashboard/2.5/deploy-with-rpm/index.html   |   8 +-
 zh/docs/dashboard/2.5/deploy/index.html            |   8 +-
 zh/docs/dashboard/2.5/develop/index.html           |   8 +-
 zh/docs/dashboard/2.5/front-end-e2e/index.html     |   8 +-
 zh/docs/dashboard/2.5/tags/index.html              |   8 +-
 zh/docs/dashboard/2.6.1/FAQ/index.html             |   8 +-
 zh/docs/dashboard/2.6.1/I18N_USER_GUIDE/index.html |   8 +-
 zh/docs/dashboard/2.6.1/IGNORE_DOC/index.html      |   8 +-
 .../2.6.1/IMPORT_OPENAPI_USER_GUIDE/index.html     |   8 +-
 zh/docs/dashboard/2.6.1/USER_GUIDE/index.html      |   8 +-
 zh/docs/dashboard/2.6.1/api/api/index.html         |   8 +-
 zh/docs/dashboard/2.6.1/back-end-tests/index.html  |   8 +-
 .../dashboard/2.6.1/deploy-with-docker/index.html  |   8 +-
 zh/docs/dashboard/2.6.1/deploy-with-rpm/index.html |   8 +-
 zh/docs/dashboard/2.6.1/deploy/index.html          |   8 +-
 zh/docs/dashboard/2.6.1/develop/index.html         |   8 +-
 zh/docs/dashboard/2.6.1/front-end-e2e/index.html   |   8 +-
 zh/docs/dashboard/2.6.1/tags/index.html            |   8 +-
 zh/docs/dashboard/2.6/FAQ/index.html               |   8 +-
 zh/docs/dashboard/2.6/I18N_USER_GUIDE/index.html   |   8 +-
 zh/docs/dashboard/2.6/IGNORE_DOC/index.html        |   8 +-
 .../2.6/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 zh/docs/dashboard/2.6/USER_GUIDE/index.html        |   8 +-
 zh/docs/dashboard/2.6/api/api/index.html           |   8 +-
 zh/docs/dashboard/2.6/back-end-tests/index.html    |   8 +-
 .../dashboard/2.6/deploy-with-docker/index.html    |   8 +-
 zh/docs/dashboard/2.6/deploy-with-rpm/index.html   |   8 +-
 zh/docs/dashboard/2.6/deploy/index.html            |   8 +-
 zh/docs/dashboard/2.6/develop/index.html           |   8 +-
 zh/docs/dashboard/2.6/front-end-e2e/index.html     |   8 +-
 zh/docs/dashboard/2.6/tags/index.html              |   8 +-
 zh/docs/dashboard/2.7.1/FAQ/index.html             |   8 +-
 zh/docs/dashboard/2.7.1/I18N_USER_GUIDE/index.html |   8 +-
 zh/docs/dashboard/2.7.1/IGNORE_DOC/index.html      |   8 +-
 .../2.7.1/IMPORT_OPENAPI_USER_GUIDE/index.html     |   8 +-
 zh/docs/dashboard/2.7.1/USER_GUIDE/index.html      |   8 +-
 zh/docs/dashboard/2.7.1/api/api/index.html         |   8 +-
 zh/docs/dashboard/2.7.1/back-end-tests/index.html  |   8 +-
 .../dashboard/2.7.1/deploy-with-docker/index.html  |   8 +-
 zh/docs/dashboard/2.7.1/deploy-with-rpm/index.html |   8 +-
 zh/docs/dashboard/2.7.1/deploy/index.html          |   8 +-
 zh/docs/dashboard/2.7.1/develop/index.html         |   8 +-
 zh/docs/dashboard/2.7.1/front-end-e2e/index.html   |   8 +-
 zh/docs/dashboard/2.7.1/tags/index.html            |   8 +-
 zh/docs/dashboard/2.7/FAQ/index.html               |   8 +-
 zh/docs/dashboard/2.7/I18N_USER_GUIDE/index.html   |   8 +-
 zh/docs/dashboard/2.7/IGNORE_DOC/index.html        |   8 +-
 .../2.7/IMPORT_OPENAPI_USER_GUIDE/index.html       |   8 +-
 zh/docs/dashboard/2.7/USER_GUIDE/index.html        |   8 +-
 zh/docs/dashboard/2.7/api/api/index.html           |   8 +-
 zh/docs/dashboard/2.7/back-end-tests/index.html    |   8 +-
 .../dashboard/2.7/deploy-with-docker/index.html    |   8 +-
 zh/docs/dashboard/2.7/deploy-with-rpm/index.html   |   8 +-
 zh/docs/dashboard/2.7/deploy/index.html            |   8 +-
 zh/docs/dashboard/2.7/develop/index.html           |   8 +-
 zh/docs/dashboard/2.7/front-end-e2e/index.html     |   8 +-
 zh/docs/dashboard/2.7/tags/index.html              |   8 +-
 zh/docs/dashboard/FAQ/index.html                   |   8 +-
 zh/docs/dashboard/I18N_USER_GUIDE/index.html       |   8 +-
 zh/docs/dashboard/IGNORE_DOC/index.html            |   8 +-
 .../dashboard/IMPORT_OPENAPI_USER_GUIDE/index.html |   8 +-
 zh/docs/dashboard/USER_GUIDE/index.html            |   8 +-
 zh/docs/dashboard/api/api/index.html               |   8 +-
 zh/docs/dashboard/back-end-tests/index.html        |   8 +-
 zh/docs/dashboard/deploy-with-docker/index.html    |   8 +-
 zh/docs/dashboard/deploy-with-rpm/index.html       |   8 +-
 zh/docs/dashboard/deploy/index.html                |   8 +-
 zh/docs/dashboard/develop/index.html               |   8 +-
 zh/docs/dashboard/front-end-e2e/index.html         |   8 +-
 zh/docs/dashboard/next/FAQ/index.html              |   8 +-
 zh/docs/dashboard/next/I18N_USER_GUIDE/index.html  |   8 +-
 zh/docs/dashboard/next/IGNORE_DOC/index.html       |  10 +-
 .../next/IMPORT_OPENAPI_USER_GUIDE/index.html      |   8 +-
 zh/docs/dashboard/next/USER_GUIDE/index.html       |   8 +-
 zh/docs/dashboard/next/api/api/index.html          |   8 +-
 zh/docs/dashboard/next/back-end-tests/index.html   |   8 +-
 .../dashboard/next/deploy-with-docker/index.html   |   8 +-
 zh/docs/dashboard/next/deploy-with-rpm/index.html  |   8 +-
 zh/docs/dashboard/next/deploy/index.html           |   8 +-
 zh/docs/dashboard/next/develop/index.html          |   8 +-
 zh/docs/dashboard/next/front-end-e2e/index.html    |   8 +-
 zh/docs/dashboard/next/tags/index.html             |   8 +-
 zh/docs/dashboard/tags/index.html                  |   8 +-
 zh/docs/docker/IGNORE_DOC/index.html               |   8 +-
 zh/docs/docker/apisix-2.10.0/IGNORE_DOC/index.html |   8 +-
 zh/docs/docker/apisix-2.10.0/build/index.html      |   8 +-
 zh/docs/docker/apisix-2.10.0/example/index.html    |   8 +-
 zh/docs/docker/apisix-2.10.0/manual/index.html     |   8 +-
 zh/docs/docker/apisix-2.10.0/tags/index.html       |   8 +-
 zh/docs/docker/apisix-2.9.0/IGNORE_DOC/index.html  |   8 +-
 zh/docs/docker/apisix-2.9.0/build/index.html       |   8 +-
 zh/docs/docker/apisix-2.9.0/example/index.html     |   8 +-
 zh/docs/docker/apisix-2.9.0/manual/index.html      |   8 +-
 zh/docs/docker/apisix-2.9.0/tags/index.html        |   8 +-
 zh/docs/docker/build/index.html                    |   8 +-
 zh/docs/docker/example/index.html                  |   8 +-
 zh/docs/docker/manual/index.html                   |   8 +-
 zh/docs/docker/next/IGNORE_DOC/index.html          |  10 +-
 zh/docs/docker/next/build/index.html               |   8 +-
 zh/docs/docker/next/example/index.html             |   8 +-
 zh/docs/docker/next/manual/index.html              |   8 +-
 zh/docs/docker/next/tags/index.html                |   8 +-
 zh/docs/docker/tags/index.html                     |   8 +-
 zh/docs/general/2fa/index.html                     |  10 +-
 zh/docs/general/committer-guide/index.html         |  10 +-
 zh/docs/general/contributor-guide/index.html       |  10 +-
 .../general/integrate-with-project-docs/index.html |  10 +-
 zh/docs/general/release-guide/index.html           |  10 +-
 zh/docs/general/security/index.html                |  10 +-
 zh/docs/general/subscribe-guide/index.html         |  10 +-
 zh/docs/general/tags/index.html                    |   8 +-
 .../go-plugin-runner/0.1.0/IGNORE_DOC/index.html   |   8 +-
 .../0.1.0/developer-guide/index.html               |   8 +-
 .../0.1.0/getting-started/index.html               |   8 +-
 zh/docs/go-plugin-runner/0.1.0/tags/index.html     |   8 +-
 zh/docs/go-plugin-runner/IGNORE_DOC/index.html     |   8 +-
 .../go-plugin-runner/developer-guide/index.html    |   8 +-
 .../go-plugin-runner/getting-started/index.html    |   8 +-
 .../go-plugin-runner/next/IGNORE_DOC/index.html    |  10 +-
 .../next/developer-guide/index.html                |   8 +-
 .../next/getting-started/index.html                |   8 +-
 zh/docs/go-plugin-runner/next/tags/index.html      |   8 +-
 zh/docs/go-plugin-runner/tags/index.html           |   8 +-
 zh/docs/helm-chart/FAQ/index.html                  |   8 +-
 zh/docs/helm-chart/IGNORE_DOC/index.html           |  10 +-
 zh/docs/helm-chart/apisix-dashboard/index.html     |   8 +-
 .../apisix-ingress-controller/index.html           |   8 +-
 zh/docs/helm-chart/apisix/index.html               |   8 +-
 zh/docs/helm-chart/tags/index.html                 |   8 +-
 zh/docs/index.html                                 |   8 +-
 zh/docs/ingress-controller/FAQ/index.html          |   8 +-
 zh/docs/ingress-controller/IGNORE_DOC/index.html   |  10 +-
 .../concepts/annotations/index.html                |   8 +-
 .../concepts/apisix_cluster_config/index.html      |   8 +-
 .../concepts/apisix_route/index.html               |   8 +-
 .../concepts/apisix_tls/index.html                 |   8 +-
 .../concepts/apisix_upstream/index.html            |   8 +-
 zh/docs/ingress-controller/contribute/index.html   |   8 +-
 .../ingress-controller/deployments/ack/index.html  |   8 +-
 .../ingress-controller/deployments/aws/index.html  |   8 +-
 .../deployments/azure/index.html                   |   8 +-
 .../ingress-controller/deployments/gke/index.html  |   8 +-
 .../deployments/k3s-rke/index.html                 |   8 +-
 .../deployments/kubesphere/index.html              |   8 +-
 .../deployments/minikube/index.html                |   8 +-
 .../ingress-controller/deployments/tke/index.html  |   8 +-
 zh/docs/ingress-controller/design/index.html       |   8 +-
 zh/docs/ingress-controller/development/index.html  |   8 +-
 .../ingress-controller/getting-started/index.html  |   8 +-
 .../practices/check-crd-status/index.html          |   8 +-
 .../ingress-controller/practices/index/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../ingress-controller/practices/mtls/index.html   |   8 +-
 .../index.html                                     |   8 +-
 .../practices/proxy-the-httpbin-service/index.html |   8 +-
 .../practices/the-hard-way/index.html              |   8 +-
 .../references/apisix_cluster_config/index.html    |   8 +-
 .../references/apisix_route_v1/index.html          |   8 +-
 .../references/apisix_route_v2alpha1/index.html    |   8 +-
 .../references/apisix_route_v2beta1/index.html     |   8 +-
 .../references/apisix_tls/index.html               |   8 +-
 .../references/apisix_upstream/index.html          |   8 +-
 zh/docs/ingress-controller/tags/index.html         |   8 +-
 zh/docs/java-plugin-runner/IGNORE_DOC/index.html   |   8 +-
 zh/docs/java-plugin-runner/development/index.html  |   8 +-
 zh/docs/java-plugin-runner/how-it-works/index.html |   8 +-
 .../java-plugin-runner/next/IGNORE_DOC/index.html  |  10 +-
 .../java-plugin-runner/next/development/index.html |   8 +-
 .../next/how-it-works/index.html                   |   8 +-
 zh/docs/java-plugin-runner/next/tags/index.html    |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/java-plugin-runner/tags/index.html         |   8 +-
 .../index.html                                     |   8 +-
 zh/docs/python-plugin-runner/IGNORE_DOC/index.html |   8 +-
 .../developer-guide/index.html                     |   8 +-
 .../getting-started/index.html                     |   8 +-
 .../next/IGNORE_DOC/index.html                     |  10 +-
 .../next/developer-guide/index.html                |   8 +-
 .../next/getting-started/index.html                |   8 +-
 zh/docs/python-plugin-runner/next/tags/index.html  |   8 +-
 zh/docs/python-plugin-runner/tags/index.html       |   8 +-
 zh/downloads/index.html                            |   8 +-
 zh/events/archive/index.html                       |   8 +-
 zh/help/index.html                                 |   8 +-
 zh/index.html                                      |   8 +-
 zh/plugins/index.html                              |   8 +-
 .../11/15/release-apache-apisix-0.9/index.html     |   8 +-
 .../2019/9/29/release-apache-apisix-0.8/index.html |   8 +-
 .../2019/9/6/release-apache-apisix-0.7/index.html  |   8 +-
 .../2020/1/15/release-apache-apisix-1.0/index.html |   8 +-
 .../10/28/release-apache-apisix-2.0/index.html     |   8 +-
 .../2020/12/1/release-apache-apisix-2.1/index.html |   8 +-
 .../release-apache-apisix-dashboard-2.2/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2020/2/24/release-apache-apisix-1.1/index.html |   8 +-
 .../release-apache-apisix-dashboard-1.0/index.html |   8 +-
 .../2020/4/20/release-apache-apisix-1.2/index.html |   8 +-
 .../2020/5/26/release-apache-apisix-1.3/index.html |   8 +-
 .../2020/6/30/release-apache-apisix-1.4/index.html |   8 +-
 .../7/20/release-apache-apisix-1.4.1/index.html    |   8 +-
 .../release-apache-apisix-dashboard-1.5/index.html |   8 +-
 .../2020/8/6/release-apache-apisix-1.5/index.html  |   8 +-
 .../release-apache-apisix-dashboard-2.3/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2021/1/8/release-apache-apisix-2.2/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.4/index.html |   8 +-
 .../2021/2/9/release-apache-apisix-2.3/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.5/index.html |   8 +-
 .../2021/3/5/release-apache-apisix-2.4/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.6/index.html |   8 +-
 .../2021/4/5/release-apache-apisix-2.5/index.html  |   8 +-
 .../index.html                                     |   8 +-
 .../2021/5/24/release-apache-apisix-2.6/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.7/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../2021/6/25/release-apache-apisix-2.7/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../2021/7/27/release-apache-apisix-2.8/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../2021/8/27/release-apache-apisix-2.9/index.html |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 .../release-apache-apisix-dashboard-2.8/index.html |   8 +-
 zh/releases/archive/index.html                     |   8 +-
 zh/releases/index.html                             |   8 +-
 zh/releases/page/2/index.html                      |   8 +-
 zh/releases/page/3/index.html                      |   8 +-
 zh/releases/page/4/index.html                      |   8 +-
 zh/releases/page/5/index.html                      |   8 +-
 zh/releases/tags/apisix-dashboard/index.html       |   8 +-
 .../tags/apisix-go-plugin-runner/index.html        |   8 +-
 .../tags/apisix-ingress-controller/index.html      |   8 +-
 .../tags/apisix-java-plugin-runner/index.html      |   8 +-
 .../tags/apisix-python-plugin-runner/index.html    |   8 +-
 zh/releases/tags/apisix/index.html                 |   8 +-
 zh/releases/tags/index.html                        |   8 +-
 zh/search/index.html                               |  10 +-
 zh/sections/components/arrowAnim/index.html        |   8 +-
 zh/sections/components/eventPosterCard/index.html  |   8 +-
 zh/sections/components/heroCanvas/index.html       |   8 +-
 zh/sections/components/ossCanvas/index.html        |   8 +-
 zh/showcase/index.html                             |   8 +-
 zh/sitemap.xml                                     |   2 +-
 zh/team/index.html                                 |   8 +-
 2897 files changed, 9185 insertions(+), 12780 deletions(-)

diff --git a/404.html b/404.html
index c9fc47d..bb78d26 100644
--- a/404.html
+++ b/404.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Page Not Found | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way/index.html b/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way/index.html
index ff43c46..0d549c5 100644
--- a/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way/index.html
+++ b/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">按照 Apache Way 运作开源商业化公司,这行得通吗? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://api [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Apache-APISIX-From-OpenSource-Commercialization/index.html b/articles/Apache-APISIX-From-OpenSource-Commercialization/index.html
index c19b5cb..dbb9d79 100644
--- a/articles/Apache-APISIX-From-OpenSource-Commercialization/index.html
+++ b/articles/Apache-APISIX-From-OpenSource-Commercialization/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 从开源项目到商业化之路 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 从开源项目到商业化之路 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.a [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Apache-APISIX-Incubator-Journey/index.html b/articles/Apache-APISIX-Incubator-Journey/index.html
index c6451d5..998d673 100644
--- a/articles/Apache-APISIX-Incubator-Journey/index.html
+++ b/articles/Apache-APISIX-Incubator-Journey/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 的孵化器之旅 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Apache-APISIX-Kubernetes-Ingress/index.html b/articles/Apache-APISIX-Kubernetes-Ingress/index.html
index 4f0d72f..4abf6b1 100644
--- a/articles/Apache-APISIX-Kubernetes-Ingress/index.html
+++ b/articles/Apache-APISIX-Kubernetes-Ingress/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">基于 Apache APISIX 的 Kubernetes Ingress 的实现 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Apache-APISIX-in-China-Mobile-Cloud/index.html b/articles/Apache-APISIX-in-China-Mobile-Cloud/index.html
index 51190dc..3865af7 100644
--- a/articles/Apache-APISIX-in-China-Mobile-Cloud/index.html
+++ b/articles/Apache-APISIX-in-China-Mobile-Cloud/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 在移动云对象存储 EOS 的应用与实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https:// [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 在移动云对象存储 EOS 的应用与实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https:// [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar/index.html b/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar/index.html
index 9033333..151cc09 100644
--- a/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar/index.html
+++ b/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">如何将 Apache APISIX 扩展为一个服务网格的边车 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://api [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed/index.html b/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed/index.html
index 6b1f8bb..c552cf6 100644
--- a/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed/index.html
+++ b/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">依托社区让 Apache APISIX 高速发展 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Rendering-Community-Events-Using-ECharts/index.html b/articles/Rendering-Community-Events-Using-ECharts/index.html
index 7fc20ca..e6b0b7d 100644
--- a/articles/Rendering-Community-Events-Using-ECharts/index.html
+++ b/articles/Rendering-Community-Events-Using-ECharts/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 ECharts 呈现社区活动的渲染图 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apach [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Speed-Limiting-With-Apache-APISIX/index.html b/articles/Speed-Limiting-With-Apache-APISIX/index.html
index 8f4d718..999bd71 100644
--- a/articles/Speed-Limiting-With-Apache-APISIX/index.html
+++ b/articles/Speed-Limiting-With-Apache-APISIX/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 Apache APISIX 实现限流限速 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apa [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh/index.html b/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh/index.html
index 1c70273..e0548e5 100644
--- a/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh/index.html
+++ b/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">用 Chaos Mesh 测试 Apache APISIX 的恢复能力 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/The-Appeal-of-OpenSource/index.html b/articles/The-Appeal-of-OpenSource/index.html
index 5c5fe30..3e032d6 100644
--- a/articles/The-Appeal-of-OpenSource/index.html
+++ b/articles/The-Appeal-of-OpenSource/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">开源的魅力 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favic [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/The-Evolution-of-Apache-APISIX/index.html b/articles/The-Evolution-of-Apache-APISIX/index.html
index 8840bee..0c6cef7 100644
--- a/articles/The-Evolution-of-Apache-APISIX/index.html
+++ b/articles/The-Evolution-of-Apache-APISIX/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 的演变 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.or [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization/index.html b/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization/index.html
index 0b2681e..91f4c2d 100644
--- a/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization/index.html
+++ b/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 Apache APISIX 进行认证和授权 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/archive/index.html b/articles/archive/index.html
index d8c0547..a83be00 100644
--- a/articles/archive/index.html
+++ b/articles/archive/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Archive | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Archive | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.or [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/atom.xml b/articles/atom.xml
index 032e7c2..0aadc11 100644
--- a/articles/atom.xml
+++ b/articles/atom.xml
@@ -2,7 +2,7 @@
 <feed xmlns="http://www.w3.org/2005/Atom">
     <id>https://apisix.apache.org/articles</id>
     <title>Apache APISIX® --  Cloud-Native API Gateway Blog</title>
-    <updated>2021-10-02T05:04:14.821Z</updated>
+    <updated>2021-10-02T14:51:29.792Z</updated>
     <generator>https://github.com/jpmonette/feed</generator>
     <link rel="alternate" href="https://apisix.apache.org/articles"/>
     <subtitle>Apache APISIX® --  Cloud-Native API Gateway Blog</subtitle>
@@ -11,14 +11,14 @@
         <title type="html"><![CDATA[Apache APISIX 从开源项目到商业化之路]]></title>
         <id>Apache APISIX 从开源项目到商业化之路</id>
         <link href="https://apisix.apache.org/articles/Apache-APISIX-From-OpenSource-Commercialization"/>
-        <updated>2021-10-02T05:04:14.821Z</updated>
+        <updated>2021-10-02T14:51:29.792Z</updated>
         <summary type="html"><![CDATA[Apache APISIX 从开源项目到商业化之路.]]></summary>
     </entry>
     <entry>
         <title type="html"><![CDATA[Apache APISIX 在移动云对象存储 EOS 的应用与实践]]></title>
         <id>Apache APISIX 在移动云对象存储 EOS 的应用与实践</id>
         <link href="https://apisix.apache.org/articles/Apache-APISIX-in-China-Mobile-Cloud"/>
-        <updated>2021-10-02T05:04:14.821Z</updated>
+        <updated>2021-10-02T14:51:29.792Z</updated>
         <summary type="html"><![CDATA[该演讲主题主要是讲述 Apache APISIX 在中国移动公有云对象存储 EOS 中的应用与实践经验分享。首先介绍了中国移动公有云建设规划及对象存储产品发展演进历程,然后阐述了我们为什么选择 APISIX 作为负载均衡网关,并对 EOS 流量治理架构演进三个阶段进行进行了详细介绍。同时,我们还分享了基于 APISIX 我们解决了哪些实际生产问题,做了哪些方案及开发工作,最后对我们未来的演进做了一些规划说明。]]></summary>
     </entry>
     <entry>
diff --git a/articles/index.html b/articles/index.html
index 7f33630..0e09780 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Article | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Article | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.or [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 3ef3e67..200eb45 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Article | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Article | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.or [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/articles/rss.xml b/articles/rss.xml
index 2242fad..6521a29 100644
--- a/articles/rss.xml
+++ b/articles/rss.xml
@@ -4,21 +4,21 @@
         <title>Apache APISIX® --  Cloud-Native API Gateway Blog</title>
         <link>https://apisix.apache.org/articles</link>
         <description>Apache APISIX® --  Cloud-Native API Gateway Blog</description>
-        <lastBuildDate>Sat, 02 Oct 2021 05:04:14 GMT</lastBuildDate>
+        <lastBuildDate>Sat, 02 Oct 2021 14:51:29 GMT</lastBuildDate>
         <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
         <generator>https://github.com/jpmonette/feed</generator>
         <item>
             <title><![CDATA[Apache APISIX 从开源项目到商业化之路]]></title>
             <link>https://apisix.apache.org/articles/Apache-APISIX-From-OpenSource-Commercialization</link>
             <guid>Apache APISIX 从开源项目到商业化之路</guid>
-            <pubDate>Sat, 02 Oct 2021 05:04:14 GMT</pubDate>
+            <pubDate>Sat, 02 Oct 2021 14:51:29 GMT</pubDate>
             <description><![CDATA[Apache APISIX 从开源项目到商业化之路.]]></description>
         </item>
         <item>
             <title><![CDATA[Apache APISIX 在移动云对象存储 EOS 的应用与实践]]></title>
             <link>https://apisix.apache.org/articles/Apache-APISIX-in-China-Mobile-Cloud</link>
             <guid>Apache APISIX 在移动云对象存储 EOS 的应用与实践</guid>
-            <pubDate>Sat, 02 Oct 2021 05:04:14 GMT</pubDate>
+            <pubDate>Sat, 02 Oct 2021 14:51:29 GMT</pubDate>
             <description><![CDATA[该演讲主题主要是讲述 Apache APISIX 在中国移动公有云对象存储 EOS 中的应用与实践经验分享。首先介绍了中国移动公有云建设规划及对象存储产品发展演进历程,然后阐述了我们为什么选择 APISIX 作为负载均衡网关,并对 EOS 流量治理架构演进三个阶段进行进行了详细介绍。同时,我们还分享了基于 APISIX 我们解决了哪些实际生产问题,做了哪些方案及开发工作,最后对我们未来的演进做了一些规划说明。]]></description>
         </item>
         <item>
diff --git a/assets/images/2021-01-11-1-5f0a8ba803904c529c9882ac38110a58.png b/assets/images/2021-01-11-1-5f0a8ba803904c529c9882ac38110a58.png
deleted file mode 100644
index dd76584..0000000
Binary files a/assets/images/2021-01-11-1-5f0a8ba803904c529c9882ac38110a58.png and /dev/null differ
diff --git a/assets/images/2021-05-25-1-e5fd919396575483d03c1ed9835aeaad.png b/assets/images/2021-05-25-1-e5fd919396575483d03c1ed9835aeaad.png
deleted file mode 100644
index 6dbb446..0000000
Binary files a/assets/images/2021-05-25-1-e5fd919396575483d03c1ed9835aeaad.png and /dev/null differ
diff --git a/assets/images/2021-06-17-1-5fcdb8fc28b061fc73281b2211fd3355.jpeg b/assets/images/2021-06-17-1-5fcdb8fc28b061fc73281b2211fd3355.jpeg
deleted file mode 100644
index eb63808..0000000
Binary files a/assets/images/2021-06-17-1-5fcdb8fc28b061fc73281b2211fd3355.jpeg and /dev/null differ
diff --git a/assets/images/2021-06-18-1-08117c13bd9e23fdd5f7aad2ee758b43.png b/assets/images/2021-06-18-1-08117c13bd9e23fdd5f7aad2ee758b43.png
deleted file mode 100644
index d726eae..0000000
Binary files a/assets/images/2021-06-18-1-08117c13bd9e23fdd5f7aad2ee758b43.png and /dev/null differ
diff --git a/assets/images/2021-06-21-1-525ff9910f08736d1e3777a630df9ae3.png b/assets/images/2021-06-21-1-525ff9910f08736d1e3777a630df9ae3.png
deleted file mode 100644
index 6ac409b..0000000
Binary files a/assets/images/2021-06-21-1-525ff9910f08736d1e3777a630df9ae3.png and /dev/null differ
diff --git a/assets/images/2021-06-21-2-c01289c552c1b22596213a57c003252d.png b/assets/images/2021-06-21-2-c01289c552c1b22596213a57c003252d.png
deleted file mode 100644
index 0f0183c..0000000
Binary files a/assets/images/2021-06-21-2-c01289c552c1b22596213a57c003252d.png and /dev/null differ
diff --git a/assets/images/2021-06-23-1-464e37bbed3bfc62a3ec8b829aedc0ac.png b/assets/images/2021-06-23-1-464e37bbed3bfc62a3ec8b829aedc0ac.png
deleted file mode 100644
index 232b270..0000000
Binary files a/assets/images/2021-06-23-1-464e37bbed3bfc62a3ec8b829aedc0ac.png and /dev/null differ
diff --git a/assets/images/2021-06-23-2-8c8f5e2605bbbde14a339f033f363863.png b/assets/images/2021-06-23-2-8c8f5e2605bbbde14a339f033f363863.png
deleted file mode 100644
index 1cf0984..0000000
Binary files a/assets/images/2021-06-23-2-8c8f5e2605bbbde14a339f033f363863.png and /dev/null differ
diff --git a/assets/images/2021-06-23-3-d82a13dc1fecf2ebddadb1bb4fa3c658.png b/assets/images/2021-06-23-3-d82a13dc1fecf2ebddadb1bb4fa3c658.png
deleted file mode 100644
index fd5eb84..0000000
Binary files a/assets/images/2021-06-23-3-d82a13dc1fecf2ebddadb1bb4fa3c658.png and /dev/null differ
diff --git a/assets/images/2021-06-23-4-bf87a94d1e9e2710e5885cda0c42d645.png b/assets/images/2021-06-23-4-bf87a94d1e9e2710e5885cda0c42d645.png
deleted file mode 100644
index f3cbbeb..0000000
Binary files a/assets/images/2021-06-23-4-bf87a94d1e9e2710e5885cda0c42d645.png and /dev/null differ
diff --git a/assets/images/2021-06-23-5-51233b6894dbddd176fc3cd01e954515.png b/assets/images/2021-06-23-5-51233b6894dbddd176fc3cd01e954515.png
deleted file mode 100644
index ae5c16d..0000000
Binary files a/assets/images/2021-06-23-5-51233b6894dbddd176fc3cd01e954515.png and /dev/null differ
diff --git a/assets/images/2021-06-23-6-e08db568c250b853753a3da854f2a3c1.png b/assets/images/2021-06-23-6-e08db568c250b853753a3da854f2a3c1.png
deleted file mode 100644
index e119364..0000000
Binary files a/assets/images/2021-06-23-6-e08db568c250b853753a3da854f2a3c1.png and /dev/null differ
diff --git a/assets/images/2021-06-23-7-450539fbcab686512fc09887d251a000.png b/assets/images/2021-06-23-7-450539fbcab686512fc09887d251a000.png
deleted file mode 100644
index f3c4f68..0000000
Binary files a/assets/images/2021-06-23-7-450539fbcab686512fc09887d251a000.png and /dev/null differ
diff --git a/assets/images/2021-06-23-8-095c10c6a12044fb87a99c2493cfe249.png b/assets/images/2021-06-23-8-095c10c6a12044fb87a99c2493cfe249.png
deleted file mode 100644
index 758ea85..0000000
Binary files a/assets/images/2021-06-23-8-095c10c6a12044fb87a99c2493cfe249.png and /dev/null differ
diff --git a/assets/images/2021-06-30-1-6eae65298ae03e3aafbcafffa6464321.png b/assets/images/2021-06-30-1-6eae65298ae03e3aafbcafffa6464321.png
deleted file mode 100644
index c0a18f4..0000000
Binary files a/assets/images/2021-06-30-1-6eae65298ae03e3aafbcafffa6464321.png and /dev/null differ
diff --git a/assets/images/2021-06-30-2-4b6100e6ec8760dbc1d75da8fe87f8af.png b/assets/images/2021-06-30-2-4b6100e6ec8760dbc1d75da8fe87f8af.png
deleted file mode 100644
index a8b05e6..0000000
Binary files a/assets/images/2021-06-30-2-4b6100e6ec8760dbc1d75da8fe87f8af.png and /dev/null differ
diff --git a/assets/images/2021-07-25-1-5cde3bee1ea10520982c9696d09920e1.png b/assets/images/2021-07-25-1-5cde3bee1ea10520982c9696d09920e1.png
deleted file mode 100644
index 1e46982..0000000
Binary files a/assets/images/2021-07-25-1-5cde3bee1ea10520982c9696d09920e1.png and /dev/null differ
diff --git a/assets/images/2021-07-25-2-49469bc00b2dd5b0821c3bf6b9ed71e1.png b/assets/images/2021-07-25-2-49469bc00b2dd5b0821c3bf6b9ed71e1.png
deleted file mode 100644
index 2ede646..0000000
Binary files a/assets/images/2021-07-25-2-49469bc00b2dd5b0821c3bf6b9ed71e1.png and /dev/null differ
diff --git a/assets/images/2021-07-25-3-b442aaa642977316ebabaa0559a90ed2.png b/assets/images/2021-07-25-3-b442aaa642977316ebabaa0559a90ed2.png
deleted file mode 100644
index eb675fd..0000000
Binary files a/assets/images/2021-07-25-3-b442aaa642977316ebabaa0559a90ed2.png and /dev/null differ
diff --git a/assets/images/2021-07-25-4-f0d948d4f1db411aa7c1c66ea94fb39f.png b/assets/images/2021-07-25-4-f0d948d4f1db411aa7c1c66ea94fb39f.png
deleted file mode 100644
index f191448..0000000
Binary files a/assets/images/2021-07-25-4-f0d948d4f1db411aa7c1c66ea94fb39f.png and /dev/null differ
diff --git a/assets/images/2021-07-25-5-1fe1e63995880d281cf60c024f58ec2d.png b/assets/images/2021-07-25-5-1fe1e63995880d281cf60c024f58ec2d.png
deleted file mode 100644
index 0bd9e99..0000000
Binary files a/assets/images/2021-07-25-5-1fe1e63995880d281cf60c024f58ec2d.png and /dev/null differ
diff --git a/assets/images/2021-07-25-6-c6fead006de2ce858d4b5457d553e746.png b/assets/images/2021-07-25-6-c6fead006de2ce858d4b5457d553e746.png
deleted file mode 100644
index 40129b4..0000000
Binary files a/assets/images/2021-07-25-6-c6fead006de2ce858d4b5457d553e746.png and /dev/null differ
diff --git a/assets/images/2021-07-25-7-84bded6c7e52d281de1fb6da07e9b111.png b/assets/images/2021-07-25-7-84bded6c7e52d281de1fb6da07e9b111.png
deleted file mode 100644
index 8c53783..0000000
Binary files a/assets/images/2021-07-25-7-84bded6c7e52d281de1fb6da07e9b111.png and /dev/null differ
diff --git a/assets/images/2021-07-25-8-a1ddddd4fe2ed281726b5439cbb7d217.png b/assets/images/2021-07-25-8-a1ddddd4fe2ed281726b5439cbb7d217.png
deleted file mode 100644
index 593a553..0000000
Binary files a/assets/images/2021-07-25-8-a1ddddd4fe2ed281726b5439cbb7d217.png and /dev/null differ
diff --git a/assets/images/2021-07-25-9-fde6febe331ceee5198411e503e2a266.png b/assets/images/2021-07-25-9-fde6febe331ceee5198411e503e2a266.png
deleted file mode 100644
index 413e5d3..0000000
Binary files a/assets/images/2021-07-25-9-fde6febe331ceee5198411e503e2a266.png and /dev/null differ
diff --git a/assets/images/2021-07-27-2-fcd83b17de4a21f12043b02f6a0debcd.png b/assets/images/2021-07-27-2-fcd83b17de4a21f12043b02f6a0debcd.png
deleted file mode 100644
index a98a66c..0000000
Binary files a/assets/images/2021-07-27-2-fcd83b17de4a21f12043b02f6a0debcd.png and /dev/null differ
diff --git a/assets/images/2021-07-27-3-bac910a792a8fc4786c8fee933ab13dd.png b/assets/images/2021-07-27-3-bac910a792a8fc4786c8fee933ab13dd.png
deleted file mode 100644
index 8bb7a77..0000000
Binary files a/assets/images/2021-07-27-3-bac910a792a8fc4786c8fee933ab13dd.png and /dev/null differ
diff --git a/assets/images/2021-07-27-4-27c896b48b4243bbcb6b015a638b7c07.png b/assets/images/2021-07-27-4-27c896b48b4243bbcb6b015a638b7c07.png
deleted file mode 100644
index 7080d9f..0000000
Binary files a/assets/images/2021-07-27-4-27c896b48b4243bbcb6b015a638b7c07.png and /dev/null differ
diff --git a/assets/images/2021-07-27-5-2146ab6cc8d4836f2981e57cbd607be7.png b/assets/images/2021-07-27-5-2146ab6cc8d4836f2981e57cbd607be7.png
deleted file mode 100644
index 5b49c49..0000000
Binary files a/assets/images/2021-07-27-5-2146ab6cc8d4836f2981e57cbd607be7.png and /dev/null differ
diff --git a/assets/images/2021-07-27-6-0626023112966dbfaf21aac70dcf068f.png b/assets/images/2021-07-27-6-0626023112966dbfaf21aac70dcf068f.png
deleted file mode 100644
index 35c8922..0000000
Binary files a/assets/images/2021-07-27-6-0626023112966dbfaf21aac70dcf068f.png and /dev/null differ
diff --git a/assets/images/2021-07-27-7-0220ebe10f8083f7eb61da53e63fca5d.png b/assets/images/2021-07-27-7-0220ebe10f8083f7eb61da53e63fca5d.png
deleted file mode 100644
index 07bd897..0000000
Binary files a/assets/images/2021-07-27-7-0220ebe10f8083f7eb61da53e63fca5d.png and /dev/null differ
diff --git a/assets/images/2021-08-09-chenyanshan-0952e0c8779715d7f5952371cd3a343d.png b/assets/images/2021-08-09-chenyanshan-0952e0c8779715d7f5952371cd3a343d.png
deleted file mode 100644
index 9bbd3ad..0000000
Binary files a/assets/images/2021-08-09-chenyanshan-0952e0c8779715d7f5952371cd3a343d.png and /dev/null differ
diff --git a/assets/images/2021-08-11-1-deac99af23c064e1f970d6f31d16d624.webp b/assets/images/2021-08-11-1-deac99af23c064e1f970d6f31d16d624.webp
deleted file mode 100644
index 8c743c7..0000000
Binary files a/assets/images/2021-08-11-1-deac99af23c064e1f970d6f31d16d624.webp and /dev/null differ
diff --git a/assets/images/2021-08-11-2-e0dc6b70588033c25005231a21fad8d3.webp b/assets/images/2021-08-11-2-e0dc6b70588033c25005231a21fad8d3.webp
deleted file mode 100644
index 6a1e750..0000000
Binary files a/assets/images/2021-08-11-2-e0dc6b70588033c25005231a21fad8d3.webp and /dev/null differ
diff --git a/assets/images/2021-08-18-1-5ecf309fec322291ce40b4fae7424acc.png b/assets/images/2021-08-18-1-5ecf309fec322291ce40b4fae7424acc.png
deleted file mode 100644
index c1ef3cc..0000000
Binary files a/assets/images/2021-08-18-1-5ecf309fec322291ce40b4fae7424acc.png and /dev/null differ
diff --git a/assets/images/2021-08-19-1-9a4a6a926b5d773847dc7568216cc68a.png b/assets/images/2021-08-19-1-9a4a6a926b5d773847dc7568216cc68a.png
deleted file mode 100644
index 4532a9d..0000000
Binary files a/assets/images/2021-08-19-1-9a4a6a926b5d773847dc7568216cc68a.png and /dev/null differ
diff --git a/assets/images/2021-08-21-1-65fe923c11d59bd9a968dc35f1b9cb97.jpg b/assets/images/2021-08-21-1-65fe923c11d59bd9a968dc35f1b9cb97.jpg
deleted file mode 100644
index c3fda6e..0000000
Binary files a/assets/images/2021-08-21-1-65fe923c11d59bd9a968dc35f1b9cb97.jpg and /dev/null differ
diff --git a/assets/images/2021-08-21-2-e9610756c89fec849caeb66361bce002.png b/assets/images/2021-08-21-2-e9610756c89fec849caeb66361bce002.png
deleted file mode 100644
index 2e961ed..0000000
Binary files a/assets/images/2021-08-21-2-e9610756c89fec849caeb66361bce002.png and /dev/null differ
diff --git a/assets/images/2021-08-21-3-a235acff5f9be2cb8cf8d6ac6c02b666.png b/assets/images/2021-08-21-3-a235acff5f9be2cb8cf8d6ac6c02b666.png
deleted file mode 100644
index 3c4286b..0000000
Binary files a/assets/images/2021-08-21-3-a235acff5f9be2cb8cf8d6ac6c02b666.png and /dev/null differ
diff --git a/assets/images/2021-08-21-4-17b564a2de6a1df403f0dbafd52f00e4.jpg b/assets/images/2021-08-21-4-17b564a2de6a1df403f0dbafd52f00e4.jpg
deleted file mode 100644
index 02414bc..0000000
Binary files a/assets/images/2021-08-21-4-17b564a2de6a1df403f0dbafd52f00e4.jpg and /dev/null differ
diff --git a/assets/images/2021-09-06-1-309b019beba33f8b42cef1731324c711.png b/assets/images/2021-09-06-1-309b019beba33f8b42cef1731324c711.png
deleted file mode 100644
index 702a09d..0000000
Binary files a/assets/images/2021-09-06-1-309b019beba33f8b42cef1731324c711.png and /dev/null differ
diff --git a/assets/images/issue_photo-09addbbcbea6116f36fdad097e6c6265.png b/assets/images/issue_photo-09addbbcbea6116f36fdad097e6c6265.png
deleted file mode 100644
index 0dbc3a7..0000000
Binary files a/assets/images/issue_photo-09addbbcbea6116f36fdad097e6c6265.png and /dev/null differ
diff --git a/assets/js/017e6c30.091dc8b7.js b/assets/js/017e6c30.091dc8b7.js
deleted file mode 100644
index 2d68d7b..0000000
--- a/assets/js/017e6c30.091dc8b7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[92086],{3905:function(e,t,n){n.d(t,{Zo:function(){return o},kt:function(){return s}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/04f3873c.0e0a27a1.js b/assets/js/04f3873c.0e0a27a1.js
new file mode 100644
index 0000000..70ddd50
--- /dev/null
+++ b/assets/js/04f3873c.0e0a27a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[30469],{77707:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/security","name":"Security","count":1,"permalink":"/blog/tags/security"}')}}]);
\ No newline at end of file
diff --git a/assets/js/04f3873c.3749a8a0.js b/assets/js/04f3873c.3749a8a0.js
deleted file mode 100644
index e50425e..0000000
--- a/assets/js/04f3873c.3749a8a0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[30469],{77707:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/security","name":"Security","count":2,"permalink":"/blog/tags/security"}')}}]);
\ No newline at end of file
diff --git a/assets/js/08110f6c.0ad4c161.js b/assets/js/08110f6c.0ad4c161.js
new file mode 100644
index 0000000..6abad2a
--- /dev/null
+++ b/assets/js/08110f6c.0ad4c161.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95941],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/08110f6c.b04dccda.js b/assets/js/08110f6c.b04dccda.js
deleted file mode 100644
index 6ebc056..0000000
--- a/assets/js/08110f6c.b04dccda.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95941],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/08ccb2cb.b533e107.js b/assets/js/08ccb2cb.b533e107.js
deleted file mode 100644
index 9b0c471..0000000
--- a/assets/js/08ccb2cb.b533e107.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[755],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r [...]
\ No newline at end of file
diff --git a/assets/js/09b17eb5.39d9735c.js b/assets/js/09b17eb5.39d9735c.js
new file mode 100644
index 0000000..db51c44
--- /dev/null
+++ b/assets/js/09b17eb5.39d9735c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[29556],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return s}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/09b17eb5.78676515.js b/assets/js/09b17eb5.78676515.js
deleted file mode 100644
index 7515af8..0000000
--- a/assets/js/09b17eb5.78676515.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[29556],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return s}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/0a868c8c.a30d0dc3.js b/assets/js/0a868c8c.a30d0dc3.js
deleted file mode 100644
index c25f631..0000000
--- a/assets/js/0a868c8c.a30d0dc3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[51618],{3905:function(t,e,a){a.d(e,{Zo:function(){return k},kt:function(){return I}});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/0e5dc264.1429d571.js b/assets/js/0e5dc264.1429d571.js
deleted file mode 100644
index 92f5cf6..0000000
--- a/assets/js/0e5dc264.1429d571.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[25073],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return b}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/11ce4159.c944b839.js b/assets/js/11ce4159.c944b839.js
deleted file mode 100644
index 232599f..0000000
--- a/assets/js/11ce4159.c944b839.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1531],{75034:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/4","nextPage":"/blog/page/6","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/11f7bf39.f0b3571b.js b/assets/js/11f7bf39.f0b3571b.js
deleted file mode 100644
index 43663db..0000000
--- a/assets/js/11f7bf39.f0b3571b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[72049],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/11fd55b2.4bf0dea1.js b/assets/js/11fd55b2.4bf0dea1.js
deleted file mode 100644
index 72f9c68..0000000
--- a/assets/js/11fd55b2.4bf0dea1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17924],{78754:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/practical-case","name":"Practical Case","count":16,"permalink":"/blog/tags/practical-case"}')}}]);
\ No newline at end of file
diff --git a/assets/js/11fd55b2.c35a6c9d.js b/assets/js/11fd55b2.c35a6c9d.js
new file mode 100644
index 0000000..d621f33
--- /dev/null
+++ b/assets/js/11fd55b2.c35a6c9d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17924],{78754:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/practical-case","name":"Practical Case","count":5,"permalink":"/blog/tags/practical-case"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1264ab03.9491c82f.js b/assets/js/1264ab03.9491c82f.js
new file mode 100644
index 0000000..25197f4
--- /dev/null
+++ b/assets/js/1264ab03.9491c82f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[64009],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/1264ab03.f1ebdffd.js b/assets/js/1264ab03.f1ebdffd.js
deleted file mode 100644
index e353a61..0000000
--- a/assets/js/1264ab03.f1ebdffd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[64009],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/1984c093.3647fd99.js b/assets/js/1984c093.3647fd99.js
deleted file mode 100644
index f351aa6..0000000
--- a/assets/js/1984c093.3647fd99.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[58538],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/19945770.20a1e9fc.js b/assets/js/19945770.20a1e9fc.js
new file mode 100644
index 0000000..95ff7ba
--- /dev/null
+++ b/assets/js/19945770.20a1e9fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[55067],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/19945770.b4b96dd7.js b/assets/js/19945770.b4b96dd7.js
deleted file mode 100644
index c633fd6..0000000
--- a/assets/js/19945770.b4b96dd7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[55067],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/1a279caa.a5602772.js b/assets/js/1a279caa.a5602772.js
deleted file mode 100644
index a2ebfb3..0000000
--- a/assets/js/1a279caa.a5602772.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[56163],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/1a76dc05.dfbea53c.js b/assets/js/1a76dc05.dfbea53c.js
deleted file mode 100644
index 45e4ab9..0000000
--- a/assets/js/1a76dc05.dfbea53c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40050],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/1b8972ee.ff70dd31.js b/assets/js/1b8972ee.ff70dd31.js
deleted file mode 100644
index b693d01..0000000
--- a/assets/js/1b8972ee.ff70dd31.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[72721],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return m}});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/1ba65c75.af6b0175.js b/assets/js/1ba65c75.af6b0175.js
deleted file mode 100644
index 5990447..0000000
--- a/assets/js/1ba65c75.af6b0175.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[39908],{3905:function(t,e,n){n.d(e,{Zo:function(){return u},kt:function(){return g}});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/1c89ab3b.6d28fcf6.js b/assets/js/1c89ab3b.6d28fcf6.js
deleted file mode 100644
index 68276a8..0000000
--- a/assets/js/1c89ab3b.6d28fcf6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[22215],{3905:function(e,t,a){a.d(t,{Zo:function(){return c},kt:function(){return m}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/1c89ab3b.a0547238.js b/assets/js/1c89ab3b.a0547238.js
new file mode 100644
index 0000000..3fdc4c1
--- /dev/null
+++ b/assets/js/1c89ab3b.a0547238.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[22215],{3905:function(e,t,a){a.d(t,{Zo:function(){return c},kt:function(){return m}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/1ccd5742.8f3a070c.js b/assets/js/1ccd5742.8f3a070c.js
deleted file mode 100644
index 5228d8e..0000000
--- a/assets/js/1ccd5742.8f3a070c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[43154],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/1fce243b.5e34d049.js b/assets/js/1fce243b.5e34d049.js
new file mode 100644
index 0000000..274c7cc
--- /dev/null
+++ b/assets/js/1fce243b.5e34d049.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[15878],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/1fce243b.d11f8da4.js b/assets/js/1fce243b.d11f8da4.js
deleted file mode 100644
index a529358..0000000
--- a/assets/js/1fce243b.d11f8da4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[15878],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/20303563.330f3bfc.js b/assets/js/20303563.330f3bfc.js
deleted file mode 100644
index 7712914..0000000
--- a/assets/js/20303563.330f3bfc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38993],{3905:function(e,t,n){n.d(t,{Zo:function(){return i},kt:function(){return g}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/220ca757.8ca119a3.js b/assets/js/220ca757.8ca119a3.js
deleted file mode 100644
index 67d02e8..0000000
--- a/assets/js/220ca757.8ca119a3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[15759],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return u}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/220ca757.8ea5ee4e.js b/assets/js/220ca757.8ea5ee4e.js
new file mode 100644
index 0000000..793fbd0
--- /dev/null
+++ b/assets/js/220ca757.8ea5ee4e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[15759],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return u}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/25a150ef.bc74f16b.js b/assets/js/25a150ef.bc74f16b.js
deleted file mode 100644
index 7998525..0000000
--- a/assets/js/25a150ef.bc74f16b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[31093],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/2a264b2a.b866c3a2.js b/assets/js/2a264b2a.b866c3a2.js
deleted file mode 100644
index e2eeb02..0000000
--- a/assets/js/2a264b2a.b866c3a2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[18498],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return k}});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/2a8cf3a9.09389d0e.js b/assets/js/2a8cf3a9.09389d0e.js
deleted file mode 100644
index d8a7d10..0000000
--- a/assets/js/2a8cf3a9.09389d0e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[49453],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/2bde796e.5159e7fd.js b/assets/js/2bde796e.5159e7fd.js
deleted file mode 100644
index a5b2598..0000000
--- a/assets/js/2bde796e.5159e7fd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[68158],{3905:function(t,e,n){n.d(e,{Zo:function(){return s},kt:function(){return k}});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/2d2b0f0c.058b1747.js b/assets/js/2d2b0f0c.058b1747.js
deleted file mode 100644
index d31b295..0000000
--- a/assets/js/2d2b0f0c.058b1747.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[89577],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return k}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/2ed9567c.97c40718.js b/assets/js/2ed9567c.97c40718.js
deleted file mode 100644
index 834ab04..0000000
--- a/assets/js/2ed9567c.97c40718.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[45186],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return f}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/30c762b6.1b4cb409.js b/assets/js/30c762b6.1b4cb409.js
deleted file mode 100644
index 65ce433..0000000
--- a/assets/js/30c762b6.1b4cb409.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[34979],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return y}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/30c762b6.b01d4da7.js b/assets/js/30c762b6.b01d4da7.js
new file mode 100644
index 0000000..3edc904
--- /dev/null
+++ b/assets/js/30c762b6.b01d4da7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[34979],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return y}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/3240be29.a4a87538.js b/assets/js/3240be29.a4a87538.js
deleted file mode 100644
index f52d2e6..0000000
--- a/assets/js/3240be29.a4a87538.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[52696],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/3393d167.35f85be3.js b/assets/js/3393d167.35f85be3.js
new file mode 100644
index 0000000..970ed78
--- /dev/null
+++ b/assets/js/3393d167.35f85be3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[27314],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return d}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/3393d167.8e34c102.js b/assets/js/3393d167.8e34c102.js
deleted file mode 100644
index 0327519..0000000
--- a/assets/js/3393d167.8e34c102.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[27314],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return d}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/33a6a7aa.6895618f.js b/assets/js/33a6a7aa.6895618f.js
deleted file mode 100644
index 7771ed8..0000000
--- a/assets/js/33a6a7aa.6895618f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[51736],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/33dee1de.0064d69a.js b/assets/js/33dee1de.0064d69a.js
deleted file mode 100644
index 8a23cf5..0000000
--- a/assets/js/33dee1de.0064d69a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[49113],{3905:function(t,e,r){r.d(e,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/34107ac7.191d5e60.js b/assets/js/34107ac7.191d5e60.js
deleted file mode 100644
index 50d01c3..0000000
--- a/assets/js/34107ac7.191d5e60.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28317],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/358566b4.186f2b83.js b/assets/js/358566b4.186f2b83.js
deleted file mode 100644
index 38fad2b..0000000
--- a/assets/js/358566b4.186f2b83.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[13553],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/358566b4.3cfdbd56.js b/assets/js/358566b4.3cfdbd56.js
new file mode 100644
index 0000000..2b4c2cb
--- /dev/null
+++ b/assets/js/358566b4.3cfdbd56.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[13553],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return d}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/385b1818.079ef634.js b/assets/js/385b1818.079ef634.js
deleted file mode 100644
index 3261fc5..0000000
--- a/assets/js/385b1818.079ef634.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[18220],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/3b0adab2.133d6a47.js b/assets/js/3b0adab2.133d6a47.js
deleted file mode 100644
index 004bc4c..0000000
--- a/assets/js/3b0adab2.133d6a47.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[57120],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/3ba63bfb.8d59d89c.js b/assets/js/3ba63bfb.8d59d89c.js
deleted file mode 100644
index edcb698..0000000
--- a/assets/js/3ba63bfb.8d59d89c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[90647],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return h}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/3da423b3.ed08f878.js b/assets/js/3da423b3.ed08f878.js
deleted file mode 100644
index bd516b8..0000000
--- a/assets/js/3da423b3.ed08f878.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95349],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/3dc9f306.b7665b6d.js b/assets/js/3dc9f306.b7665b6d.js
deleted file mode 100644
index cc43c19..0000000
--- a/assets/js/3dc9f306.b7665b6d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38393],{3905:function(e,t,o){o.d(t,{Zo:function(){return l},kt:function(){return d}});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/3dc9f306.ca888517.js b/assets/js/3dc9f306.ca888517.js
new file mode 100644
index 0000000..43b1880
--- /dev/null
+++ b/assets/js/3dc9f306.ca888517.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38393],{3905:function(e,t,o){o.d(t,{Zo:function(){return l},kt:function(){return d}});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/3fc6ae28.2b7fb337.js b/assets/js/3fc6ae28.2b7fb337.js
deleted file mode 100644
index 3834bb1..0000000
--- a/assets/js/3fc6ae28.2b7fb337.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[94490],{3905:function(e,t,a){a.d(t,{Zo:function(){return o},kt:function(){return s}});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/40fb2fae.2397ce6c.js b/assets/js/40fb2fae.2397ce6c.js
deleted file mode 100644
index 14ba6a1..0000000
--- a/assets/js/40fb2fae.2397ce6c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[32547],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/40fb2fae.53717e61.js b/assets/js/40fb2fae.53717e61.js
new file mode 100644
index 0000000..914c303
--- /dev/null
+++ b/assets/js/40fb2fae.53717e61.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[32547],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/428f5968.bdd65c5e.js b/assets/js/428f5968.bdd65c5e.js
deleted file mode 100644
index 3799b76..0000000
--- a/assets/js/428f5968.bdd65c5e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[67417],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return s}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/433e9d41.77f7fb98.js b/assets/js/433e9d41.77f7fb98.js
deleted file mode 100644
index be4f88b..0000000
--- a/assets/js/433e9d41.77f7fb98.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[63273],{3905:function(e,t,r){r.d(t,{Zo:function(){return i},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/449c9590.41a51da6.js b/assets/js/449c9590.41a51da6.js
deleted file mode 100644
index e19f6fd..0000000
--- a/assets/js/449c9590.41a51da6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[20025],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/44ac4dbb.14cfe635.js b/assets/js/44ac4dbb.14cfe635.js
deleted file mode 100644
index be64ba2..0000000
--- a/assets/js/44ac4dbb.14cfe635.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[77142],{90399:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/6","page":6,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/5","nextPage":"/blog/page/7","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/45ab1254.127742f0.js b/assets/js/45ab1254.127742f0.js
deleted file mode 100644
index 7b90ed1..0000000
--- a/assets/js/45ab1254.127742f0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[66213],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/4c20006b.70ab0929.js b/assets/js/4c20006b.70ab0929.js
new file mode 100644
index 0000000..f559db8
--- /dev/null
+++ b/assets/js/4c20006b.70ab0929.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[91012],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return O}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/4c20006b.7bda5cd0.js b/assets/js/4c20006b.7bda5cd0.js
deleted file mode 100644
index bbea634..0000000
--- a/assets/js/4c20006b.7bda5cd0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[91012],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/4e71f1c0.d6da6c0b.js b/assets/js/4e71f1c0.d6da6c0b.js
deleted file mode 100644
index e0fc3ce..0000000
--- a/assets/js/4e71f1c0.d6da6c0b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2612],{51060:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/events","name":"Events","count":14,"permalink":"/blog/tags/events"}')}}]);
\ No newline at end of file
diff --git a/assets/js/4e71f1c0.e16a3d66.js b/assets/js/4e71f1c0.e16a3d66.js
new file mode 100644
index 0000000..690739b
--- /dev/null
+++ b/assets/js/4e71f1c0.e16a3d66.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2612],{51060:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/events","name":"Events","count":3,"permalink":"/blog/tags/events"}')}}]);
\ No newline at end of file
diff --git a/assets/js/4ed25eed.0543211e.js b/assets/js/4ed25eed.0543211e.js
deleted file mode 100644
index a43105f..0000000
--- a/assets/js/4ed25eed.0543211e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37380],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/507e1a4c.2634da61.js b/assets/js/507e1a4c.2634da61.js
deleted file mode 100644
index e29063c..0000000
--- a/assets/js/507e1a4c.2634da61.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[58509],{62276:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"Apache APISIX \u4ece\u5f00\u6e90\u9879\u76ee\u5230\u5546\u4e1a\u5316\u4e4b\u8def","metadata":{"permalink":"/articles/Apache-APISIX-From-OpenSource-Commercialization","source":"@site/articles/Apache-APISIX-From-OpenSource-Commercialization.md","title":"Apache APISIX \u4ece\u5f00\u6e90\u9879\u76ee\u5230\u5546\u4e1a\u5316\u4e4b\u8def","description":"Apache APISI [...]
\ No newline at end of file
diff --git a/assets/js/507e1a4c.43a0ec51.js b/assets/js/507e1a4c.43a0ec51.js
new file mode 100644
index 0000000..56c74df
--- /dev/null
+++ b/assets/js/507e1a4c.43a0ec51.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[58509],{62276:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"Apache APISIX \u4ece\u5f00\u6e90\u9879\u76ee\u5230\u5546\u4e1a\u5316\u4e4b\u8def","metadata":{"permalink":"/articles/Apache-APISIX-From-OpenSource-Commercialization","source":"@site/articles/Apache-APISIX-From-OpenSource-Commercialization.md","title":"Apache APISIX \u4ece\u5f00\u6e90\u9879\u76ee\u5230\u5546\u4e1a\u5316\u4e4b\u8def","description":"Apache APISI [...]
\ No newline at end of file
diff --git a/assets/js/50f4d33e.22508a21.js b/assets/js/50f4d33e.22508a21.js
deleted file mode 100644
index e87f496..0000000
--- a/assets/js/50f4d33e.22508a21.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[23986],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/50facf8e.3160ae51.js b/assets/js/50facf8e.3160ae51.js
deleted file mode 100644
index ae98f90..0000000
--- a/assets/js/50facf8e.3160ae51.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[87974],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/50facf8e.6c997f91.js b/assets/js/50facf8e.6c997f91.js
new file mode 100644
index 0000000..51c6737
--- /dev/null
+++ b/assets/js/50facf8e.6c997f91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[87974],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/514de2af.7281a14d.js b/assets/js/514de2af.7281a14d.js
new file mode 100644
index 0000000..8cdd750
--- /dev/null
+++ b/assets/js/514de2af.7281a14d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4058],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n, [...]
\ No newline at end of file
diff --git a/assets/js/514de2af.a413ac3c.js b/assets/js/514de2af.a413ac3c.js
deleted file mode 100644
index 2164c19..0000000
--- a/assets/js/514de2af.a413ac3c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4058],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n, [...]
\ No newline at end of file
diff --git a/assets/js/52099127.c3795d6e.js b/assets/js/52099127.c3795d6e.js
deleted file mode 100644
index 49d2af7..0000000
--- a/assets/js/52099127.c3795d6e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[41426],{94708:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/7","page":7,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/6","nextPage":"/blog/page/8","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/53b88444.1d9cd3ba.js b/assets/js/53b88444.1d9cd3ba.js
deleted file mode 100644
index cb8cdb8..0000000
--- a/assets/js/53b88444.1d9cd3ba.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4053],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return g}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n, [...]
\ No newline at end of file
diff --git a/assets/js/53e90e00.1d721070.js b/assets/js/53e90e00.1d721070.js
deleted file mode 100644
index bb40a17..0000000
--- a/assets/js/53e90e00.1d721070.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[49526],{3905:function(e,a,t){t.d(a,{Zo:function(){return o},kt:function(){return u}});var n=t(67294);function p(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function r(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/542fd41f.05cf37df.js b/assets/js/542fd41f.05cf37df.js
new file mode 100644
index 0000000..69810bf
--- /dev/null
+++ b/assets/js/542fd41f.05cf37df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4316],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/542fd41f.2e35fd07.js b/assets/js/542fd41f.2e35fd07.js
deleted file mode 100644
index c821d2e..0000000
--- a/assets/js/542fd41f.2e35fd07.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4316],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/55207995.297dcddd.js b/assets/js/55207995.297dcddd.js
deleted file mode 100644
index beb08f7..0000000
--- a/assets/js/55207995.297dcddd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[69650],{43610:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/technology","name":"Technology","count":10,"permalink":"/blog/tags/technology"}')}}]);
\ No newline at end of file
diff --git a/assets/js/55207995.50d96b04.js b/assets/js/55207995.50d96b04.js
new file mode 100644
index 0000000..95ac070
--- /dev/null
+++ b/assets/js/55207995.50d96b04.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[69650],{43610:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/technology","name":"Technology","count":3,"permalink":"/blog/tags/technology"}')}}]);
\ No newline at end of file
diff --git a/assets/js/563a3008.c2f8c7ab.js b/assets/js/563a3008.c2f8c7ab.js
deleted file mode 100644
index 8c99517..0000000
--- a/assets/js/563a3008.c2f8c7ab.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[35127],{3905:function(e,t,a){a.d(t,{Zo:function(){return l},kt:function(){return m}});var r=a(67294);function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/56b4fd9f.5f1b7846.js b/assets/js/56b4fd9f.5f1b7846.js
deleted file mode 100644
index 8be294b..0000000
--- a/assets/js/56b4fd9f.5f1b7846.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[96117],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/56b4fd9f.b1da699b.js b/assets/js/56b4fd9f.b1da699b.js
new file mode 100644
index 0000000..425f51e
--- /dev/null
+++ b/assets/js/56b4fd9f.b1da699b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[96117],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/56ef7775.2b55e47b.js b/assets/js/56ef7775.2b55e47b.js
deleted file mode 100644
index 816fdc0..0000000
--- a/assets/js/56ef7775.2b55e47b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[35265],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return s}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/57218adb.e91fc048.js b/assets/js/57218adb.e91fc048.js
deleted file mode 100644
index 659716c..0000000
--- a/assets/js/57218adb.e91fc048.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40110],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/57f3a293.dab82a60.js b/assets/js/57f3a293.dab82a60.js
deleted file mode 100644
index 60ead09..0000000
--- a/assets/js/57f3a293.dab82a60.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53944],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/5aca9bfb.26521364.js b/assets/js/5aca9bfb.26521364.js
deleted file mode 100644
index 06269b4..0000000
--- a/assets/js/5aca9bfb.26521364.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36790],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/5aca9bfb.32e4f4da.js b/assets/js/5aca9bfb.32e4f4da.js
new file mode 100644
index 0000000..c328cd0
--- /dev/null
+++ b/assets/js/5aca9bfb.32e4f4da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36790],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/5b012f59.3c810e20.js b/assets/js/5b012f59.3c810e20.js
deleted file mode 100644
index 57adfa9..0000000
--- a/assets/js/5b012f59.3c810e20.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3861],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return h}});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t, [...]
\ No newline at end of file
diff --git a/assets/js/5b79823b.4f834ab4.js b/assets/js/5b79823b.4f834ab4.js
deleted file mode 100644
index 195d259..0000000
--- a/assets/js/5b79823b.4f834ab4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[83587],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/5bb67ffc.8c5c7351.js b/assets/js/5bb67ffc.8c5c7351.js
deleted file mode 100644
index bd7eb42..0000000
--- a/assets/js/5bb67ffc.8c5c7351.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[12100],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return b}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/601c6eaa.3f5ceaea.js b/assets/js/601c6eaa.3f5ceaea.js
new file mode 100644
index 0000000..418b64a
--- /dev/null
+++ b/assets/js/601c6eaa.3f5ceaea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[97117],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/601c6eaa.711d608e.js b/assets/js/601c6eaa.711d608e.js
deleted file mode 100644
index 0556204..0000000
--- a/assets/js/601c6eaa.711d608e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[97117],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/60509377.070d8cb4.js b/assets/js/60509377.070d8cb4.js
deleted file mode 100644
index bbe934a..0000000
--- a/assets/js/60509377.070d8cb4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[74562],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/60509377.b6f31b65.js b/assets/js/60509377.b6f31b65.js
new file mode 100644
index 0000000..e8c3434
--- /dev/null
+++ b/assets/js/60509377.b6f31b65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[74562],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/6073f1ae.cd783988.js b/assets/js/6073f1ae.cd783988.js
deleted file mode 100644
index 8545819..0000000
--- a/assets/js/6073f1ae.cd783988.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[16415],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return s}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/60f19d40.2c5388b4.js b/assets/js/60f19d40.2c5388b4.js
deleted file mode 100644
index 3b69616..0000000
--- a/assets/js/60f19d40.2c5388b4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[69682],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return d}});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/6327eb3b.53af5389.js b/assets/js/6327eb3b.53af5389.js
deleted file mode 100644
index 4925e5f..0000000
--- a/assets/js/6327eb3b.53af5389.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[21127],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/63751cfe.4d16fe27.js b/assets/js/63751cfe.4d16fe27.js
deleted file mode 100644
index 3034819..0000000
--- a/assets/js/63751cfe.4d16fe27.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[63956],{3905:function(e,t,o){o.d(t,{Zo:function(){return p},kt:function(){return m}});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/63751cfe.e49fce6c.js b/assets/js/63751cfe.e49fce6c.js
new file mode 100644
index 0000000..6e02b92
--- /dev/null
+++ b/assets/js/63751cfe.e49fce6c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[63956],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/6433f4ff.aceb0639.js b/assets/js/6433f4ff.aceb0639.js
deleted file mode 100644
index f8d517e..0000000
--- a/assets/js/6433f4ff.aceb0639.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[52769],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/657aec7e.6228594e.js b/assets/js/657aec7e.6228594e.js
deleted file mode 100644
index ac791ff..0000000
--- a/assets/js/657aec7e.6228594e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[60621],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/66fbb9c2.610e70d6.js b/assets/js/66fbb9c2.610e70d6.js
new file mode 100644
index 0000000..7fbe29f
--- /dev/null
+++ b/assets/js/66fbb9c2.610e70d6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7668],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return d}});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/66fbb9c2.e0a701e5.js b/assets/js/66fbb9c2.e0a701e5.js
deleted file mode 100644
index 4ec4c5b..0000000
--- a/assets/js/66fbb9c2.e0a701e5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7668],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return d}});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/67c20baf.1994d969.js b/assets/js/67c20baf.1994d969.js
deleted file mode 100644
index 8cf3903..0000000
--- a/assets/js/67c20baf.1994d969.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[13265],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return I}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/68f3868d.e72d3f83.js b/assets/js/68f3868d.e72d3f83.js
deleted file mode 100644
index af17b19..0000000
--- a/assets/js/68f3868d.e72d3f83.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[88908],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/6906be4c.43dca5f0.js b/assets/js/6906be4c.43dca5f0.js
deleted file mode 100644
index ee2835b..0000000
--- a/assets/js/6906be4c.43dca5f0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[39488],{3905:function(e,t,n){n.d(t,{Zo:function(){return o},kt:function(){return g}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/69b09ea9.29da7d60.js b/assets/js/69b09ea9.29da7d60.js
new file mode 100644
index 0000000..94ca05e
--- /dev/null
+++ b/assets/js/69b09ea9.29da7d60.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40498],{22332:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/community","name":"Community","count":1,"permalink":"/blog/tags/community"}')}}]);
\ No newline at end of file
diff --git a/assets/js/69b09ea9.9b0b2012.js b/assets/js/69b09ea9.9b0b2012.js
deleted file mode 100644
index ed7454f..0000000
--- a/assets/js/69b09ea9.9b0b2012.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40498],{22332:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/community","name":"Community","count":3,"permalink":"/blog/tags/community"}')}}]);
\ No newline at end of file
diff --git a/assets/js/6d361364.ab0ca983.js b/assets/js/6d361364.ab0ca983.js
deleted file mode 100644
index 2ffc1b9..0000000
--- a/assets/js/6d361364.ab0ca983.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37084],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/6eaeadff.8ddca372.js b/assets/js/6eaeadff.8ddca372.js
deleted file mode 100644
index c680319..0000000
--- a/assets/js/6eaeadff.8ddca372.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[25421],{70393:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/interview","name":"Interview","count":5,"permalink":"/blog/tags/interview"}')}}]);
\ No newline at end of file
diff --git a/assets/js/6f550950.6f5b696b.js b/assets/js/6f550950.6f5b696b.js
deleted file mode 100644
index 5fa6391..0000000
--- a/assets/js/6f550950.6f5b696b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[76220],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/6ff59299.16f2be30.js b/assets/js/6ff59299.16f2be30.js
deleted file mode 100644
index 7b54856..0000000
--- a/assets/js/6ff59299.16f2be30.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[24436],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/6ff59299.c6013fb5.js b/assets/js/6ff59299.c6013fb5.js
new file mode 100644
index 0000000..f626b39
--- /dev/null
+++ b/assets/js/6ff59299.c6013fb5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[24436],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/710f644c.1c01727f.js b/assets/js/710f644c.1c01727f.js
deleted file mode 100644
index a6e236c..0000000
--- a/assets/js/710f644c.1c01727f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28206],{3905:function(e,t,n){n.d(t,{Zo:function(){return o},kt:function(){return h}});var l=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/714c5e81.6410300f.js b/assets/js/714c5e81.6410300f.js
new file mode 100644
index 0000000..c305259
--- /dev/null
+++ b/assets/js/714c5e81.6410300f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[57279],{3905:function(t,e,o){o.d(e,{Zo:function(){return h},kt:function(){return m}});var r=o(67294);function n(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function i(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/714c5e81.73e377f9.js b/assets/js/714c5e81.73e377f9.js
deleted file mode 100644
index 6e2abe9..0000000
--- a/assets/js/714c5e81.73e377f9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[57279],{3905:function(t,e,o){o.d(e,{Zo:function(){return p},kt:function(){return m}});var r=o(67294);function n(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function i(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/736b7d26.f3e03e2b.js b/assets/js/736b7d26.f3e03e2b.js
deleted file mode 100644
index c400c76..0000000
--- a/assets/js/736b7d26.f3e03e2b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[64011],{3905:function(e,a,t){t.d(a,{Zo:function(){return A},kt:function(){return s}});var n=t(67294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function c(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/74718473.ae7e7992.js b/assets/js/74718473.ae7e7992.js
deleted file mode 100644
index 01d2d9b..0000000
--- a/assets/js/74718473.ae7e7992.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[94402],{3905:function(e,n,t){t.d(n,{Zo:function(){return h},kt:function(){return m}});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/749ed826.e641bdd3.js b/assets/js/749ed826.e641bdd3.js
deleted file mode 100644
index 449c862..0000000
--- a/assets/js/749ed826.e641bdd3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37559],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/749ed826.f7191796.js b/assets/js/749ed826.f7191796.js
new file mode 100644
index 0000000..5828d53
--- /dev/null
+++ b/assets/js/749ed826.f7191796.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37559],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/74dddb32.70c57d88.js b/assets/js/74dddb32.70c57d88.js
deleted file mode 100644
index ffc5620..0000000
--- a/assets/js/74dddb32.70c57d88.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[66203],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/74dddb32.f2c72e2a.js b/assets/js/74dddb32.f2c72e2a.js
new file mode 100644
index 0000000..ec58c2e
--- /dev/null
+++ b/assets/js/74dddb32.f2c72e2a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[66203],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/7716d3b8.9aa6bbb1.js b/assets/js/7716d3b8.9aa6bbb1.js
deleted file mode 100644
index 26e770a..0000000
--- a/assets/js/7716d3b8.9aa6bbb1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40673],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/7af3052c.5ac6ab6c.js b/assets/js/7af3052c.5ac6ab6c.js
new file mode 100644
index 0000000..226f194
--- /dev/null
+++ b/assets/js/7af3052c.5ac6ab6c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[25032],{3905:function(e,a,t){t.d(a,{Zo:function(){return d},kt:function(){return u}});var n=t(67294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function r(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/7af3052c.80421e79.js b/assets/js/7af3052c.80421e79.js
deleted file mode 100644
index 2eae637..0000000
--- a/assets/js/7af3052c.80421e79.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[25032],{3905:function(e,a,t){t.d(a,{Zo:function(){return d},kt:function(){return u}});var n=t(67294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function r(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/7d9726a8.0a7e8423.js b/assets/js/7d9726a8.0a7e8423.js
deleted file mode 100644
index e806fe4..0000000
--- a/assets/js/7d9726a8.0a7e8423.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7429],{89494:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/4","page":4,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/3","nextPage":"/blog/page/5","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/7e6925b5.39ae939d.js b/assets/js/7e6925b5.39ae939d.js
deleted file mode 100644
index 5684fc9..0000000
--- a/assets/js/7e6925b5.39ae939d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[10808],{3905:function(e,n,t){t.d(n,{Zo:function(){return l},kt:function(){return h}});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/80791de8.a6293cde.js b/assets/js/80791de8.a6293cde.js
new file mode 100644
index 0000000..f48d927
--- /dev/null
+++ b/assets/js/80791de8.a6293cde.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[50466],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return d}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/80791de8.cb420caf.js b/assets/js/80791de8.cb420caf.js
deleted file mode 100644
index 093ca9e..0000000
--- a/assets/js/80791de8.cb420caf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[50466],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return O}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.9f619e7d.js b/assets/js/814f3328.9f619e7d.js
deleted file mode 100644
index 5b9ac13..0000000
--- a/assets/js/814f3328.9f619e7d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[52535],{45641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","permalink":"/blog/2021/10/01/openEuler"},{"title":"\u793e\u533a\u5468\u62a5\uff5c\u65b0\u664b committer \u4e00\u4f4d\uff0c\u529f\u80fd\u4eae\u70b9\u66f4\u65b0\u8fdb\u884c\u4e2d","permalink":"/blog/2021/09/30/weekly- [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.d46a227b.js b/assets/js/814f3328.d46a227b.js
new file mode 100644
index 0000000..cd59e6d
--- /dev/null
+++ b/assets/js/814f3328.d46a227b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[52535],{45641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","permalink":"/blog/2021/10/01/openEuler"},{"title":"\u793e\u533a\u5468\u62a5\uff5c\u65b0\u664b committer \u4e00\u4f4d\uff0c\u529f\u80fd\u4eae\u70b9\u66f4\u65b0\u8fdb\u884c\u4e2d","permalink":"/blog/2021/09/30/weekly- [...]
\ No newline at end of file
diff --git a/assets/js/8159971e.e7081da7.js b/assets/js/8159971e.e7081da7.js
deleted file mode 100644
index 18696e0..0000000
--- a/assets/js/8159971e.e7081da7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36667],{3905:function(e,t,a){a.d(t,{Zo:function(){return u},kt:function(){return k}});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/82a29d85.57d01420.js b/assets/js/82a29d85.57d01420.js
deleted file mode 100644
index 41ed994..0000000
--- a/assets/js/82a29d85.57d01420.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[18996],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/83d480e9.0737f244.js b/assets/js/83d480e9.0737f244.js
deleted file mode 100644
index 3465329..0000000
--- a/assets/js/83d480e9.0737f244.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[60205],{43672:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/release","name":"Release","count":10,"permalink":"/blog/tags/release"}')}}]);
\ No newline at end of file
diff --git a/assets/js/83d480e9.b498b0a8.js b/assets/js/83d480e9.b498b0a8.js
new file mode 100644
index 0000000..52ce98c
--- /dev/null
+++ b/assets/js/83d480e9.b498b0a8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[60205],{43672:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/release","name":"Release","count":5,"permalink":"/blog/tags/release"}')}}]);
\ No newline at end of file
diff --git a/assets/js/83edfd60.b9a8efee.js b/assets/js/83edfd60.b9a8efee.js
deleted file mode 100644
index 81f7247..0000000
--- a/assets/js/83edfd60.b9a8efee.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[42720],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/87452a79.594b2baf.js b/assets/js/87452a79.594b2baf.js
deleted file mode 100644
index 9066458..0000000
--- a/assets/js/87452a79.594b2baf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[32787],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return h}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/87452a79.877c2bcb.js b/assets/js/87452a79.877c2bcb.js
new file mode 100644
index 0000000..ee879b1
--- /dev/null
+++ b/assets/js/87452a79.877c2bcb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[32787],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/89542356.009c37c6.js b/assets/js/89542356.009c37c6.js
deleted file mode 100644
index 21d33d4..0000000
--- a/assets/js/89542356.009c37c6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[59286],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/8b5124ac.d5e6bfc7.js b/assets/js/8b5124ac.d5e6bfc7.js
deleted file mode 100644
index 305693e..0000000
--- a/assets/js/8b5124ac.d5e6bfc7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[67176],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var a=n(67294);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/8ca3d5dc.9373e0c9.js b/assets/js/8ca3d5dc.9373e0c9.js
deleted file mode 100644
index 4d947cb..0000000
--- a/assets/js/8ca3d5dc.9373e0c9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[22471],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return f}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/8e784bf3.910bfa7a.js b/assets/js/8e784bf3.910bfa7a.js
deleted file mode 100644
index fc50baf..0000000
--- a/assets/js/8e784bf3.910bfa7a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[78216],{3905:function(e,t,o){o.d(t,{Zo:function(){return p},kt:function(){return d}});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/8e784bf3.c8b927bb.js b/assets/js/8e784bf3.c8b927bb.js
new file mode 100644
index 0000000..919a17b
--- /dev/null
+++ b/assets/js/8e784bf3.c8b927bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[78216],{3905:function(e,t,o){o.d(t,{Zo:function(){return p},kt:function(){return d}});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o [...]
\ No newline at end of file
diff --git a/assets/js/8eb4e46b.d7447dbe.js b/assets/js/8eb4e46b.d7447dbe.js
deleted file mode 100644
index 12b4299..0000000
--- a/assets/js/8eb4e46b.d7447dbe.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[10001],{82638:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog","nextPage":"/blog/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/8eb4e46b.e1cac404.js b/assets/js/8eb4e46b.e1cac404.js
new file mode 100644
index 0000000..0cecff8
--- /dev/null
+++ b/assets/js/8eb4e46b.e1cac404.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[10001],{82638:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":18,"previousPage":"/blog","nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/8f147d6b.60514646.js b/assets/js/8f147d6b.60514646.js
deleted file mode 100644
index 7401a82..0000000
--- a/assets/js/8f147d6b.60514646.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[74048],{3905:function(e,t,a){a.d(t,{Zo:function(){return A},kt:function(){return I}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/8f700fa6.9956e38c.js b/assets/js/8f700fa6.9956e38c.js
new file mode 100644
index 0000000..3340120
--- /dev/null
+++ b/assets/js/8f700fa6.9956e38c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53963],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/8f700fa6.c8ce8b90.js b/assets/js/8f700fa6.c8ce8b90.js
deleted file mode 100644
index 025d45f..0000000
--- a/assets/js/8f700fa6.c8ce8b90.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53963],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/90fc8a94.2020593b.js b/assets/js/90fc8a94.2020593b.js
deleted file mode 100644
index ef689e8..0000000
--- a/assets/js/90fc8a94.2020593b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[64125],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return s}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/90fc8a94.918ae6f7.js b/assets/js/90fc8a94.918ae6f7.js
new file mode 100644
index 0000000..387c9e3
--- /dev/null
+++ b/assets/js/90fc8a94.918ae6f7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[64125],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return s}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/919ddc63.086e237b.js b/assets/js/919ddc63.086e237b.js
new file mode 100644
index 0000000..b1ac7c8
--- /dev/null
+++ b/assets/js/919ddc63.086e237b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[31410],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/919ddc63.c435c8a2.js b/assets/js/919ddc63.c435c8a2.js
deleted file mode 100644
index f40c396..0000000
--- a/assets/js/919ddc63.c435c8a2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[31410],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/92999a1c.7e2ea4cf.js b/assets/js/92999a1c.7e2ea4cf.js
deleted file mode 100644
index 7aee253..0000000
--- a/assets/js/92999a1c.7e2ea4cf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[18442],{15310:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/3","page":3,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/2","nextPage":"/blog/page/4","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/941960b1.1a261a8b.js b/assets/js/941960b1.1a261a8b.js
deleted file mode 100644
index fe0d451..0000000
--- a/assets/js/941960b1.1a261a8b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[41950],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/941960b1.f4d18763.js b/assets/js/941960b1.f4d18763.js
new file mode 100644
index 0000000..e738f32
--- /dev/null
+++ b/assets/js/941960b1.f4d18763.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[41950],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/96e57280.f88bbd71.js b/assets/js/96e57280.f88bbd71.js
deleted file mode 100644
index 1c3ae04..0000000
--- a/assets/js/96e57280.f88bbd71.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[48430],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return A}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/98b657d8.0d4b4f2a.js b/assets/js/98b657d8.0d4b4f2a.js
deleted file mode 100644
index adfd27f..0000000
--- a/assets/js/98b657d8.0d4b4f2a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38486],{15509:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/8","page":8,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/7","nextPage":null,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/9ce0cdd0.4a6de088.js b/assets/js/9ce0cdd0.4a6de088.js
deleted file mode 100644
index 9d7a461..0000000
--- a/assets/js/9ce0cdd0.4a6de088.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[46060],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/9ce0cdd0.8db4bf21.js b/assets/js/9ce0cdd0.8db4bf21.js
new file mode 100644
index 0000000..8e24ed5
--- /dev/null
+++ b/assets/js/9ce0cdd0.8db4bf21.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[46060],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/9e1badc6.7e02849b.js b/assets/js/9e1badc6.7e02849b.js
deleted file mode 100644
index 41f7b7d..0000000
--- a/assets/js/9e1badc6.7e02849b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[96629],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/a06dfdd3.4b3c76a3.js b/assets/js/a06dfdd3.4b3c76a3.js
deleted file mode 100644
index 84d569c..0000000
--- a/assets/js/a06dfdd3.4b3c76a3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17588],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/a06dfdd3.e2ee080a.js b/assets/js/a06dfdd3.e2ee080a.js
new file mode 100644
index 0000000..1dbc79a
--- /dev/null
+++ b/assets/js/a06dfdd3.e2ee080a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17588],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/a0d74a5e.6a329989.js b/assets/js/a0d74a5e.6a329989.js
deleted file mode 100644
index e8129cd..0000000
--- a/assets/js/a0d74a5e.6a329989.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5215],{3905:function(e,t,a){a.d(t,{Zo:function(){return o},kt:function(){return I}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a, [...]
\ No newline at end of file
diff --git a/assets/js/a3c1b03e.5a3ee32a.js b/assets/js/a3c1b03e.5a3ee32a.js
deleted file mode 100644
index c76a5f9..0000000
--- a/assets/js/a3c1b03e.5a3ee32a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[18079],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/a4a2cefa.37406c8f.js b/assets/js/a4a2cefa.37406c8f.js
deleted file mode 100644
index 4d2ccab..0000000
--- a/assets/js/a4a2cefa.37406c8f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28554],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/a7023ddc.1fb5d426.js b/assets/js/a7023ddc.1fb5d426.js
new file mode 100644
index 0000000..accb7b6
--- /dev/null
+++ b/assets/js/a7023ddc.1fb5d426.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[11713],{53457:function(a){a.exports=JSON.parse('{"/blog/tags/events":{"allTagsPath":"/blog/tags","slug":"/blog/tags/events","name":"Events","count":3,"permalink":"/blog/tags/events"},"/blog/tags/release":{"allTagsPath":"/blog/tags","slug":"/blog/tags/release","name":"Release","count":5,"permalink":"/blog/tags/release"},"/blog/tags/practical-case":{"allTagsPath":"/blog/tags","slug":"/blog/tags/practical-case","name":"Practical  [...]
\ No newline at end of file
diff --git a/assets/js/a7023ddc.3de5cbe8.js b/assets/js/a7023ddc.3de5cbe8.js
deleted file mode 100644
index ae60f14..0000000
--- a/assets/js/a7023ddc.3de5cbe8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[11713],{53457:function(a){a.exports=JSON.parse('{"/blog/tags/events":{"allTagsPath":"/blog/tags","slug":"/blog/tags/events","name":"Events","count":14,"permalink":"/blog/tags/events"},"/blog/tags/release":{"allTagsPath":"/blog/tags","slug":"/blog/tags/release","name":"Release","count":10,"permalink":"/blog/tags/release"},"/blog/tags/user-case":{"allTagsPath":"/blog/tags","slug":"/blog/tags/user-case","name":"User Case","count" [...]
\ No newline at end of file
diff --git a/assets/js/adbb350b.691c36a0.js b/assets/js/adbb350b.691c36a0.js
deleted file mode 100644
index d6d0b67..0000000
--- a/assets/js/adbb350b.691c36a0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[85427],{3905:function(e,t,i){i.d(t,{Zo:function(){return p},kt:function(){return d}});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i [...]
\ No newline at end of file
diff --git a/assets/js/adbb350b.88a7ba7e.js b/assets/js/adbb350b.88a7ba7e.js
new file mode 100644
index 0000000..f5fb0b5
--- /dev/null
+++ b/assets/js/adbb350b.88a7ba7e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[85427],{3905:function(e,t,i){i.d(t,{Zo:function(){return p},kt:function(){return d}});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i [...]
\ No newline at end of file
diff --git a/assets/js/b2413e78.e50c880a.js b/assets/js/b2413e78.e50c880a.js
deleted file mode 100644
index 1e976f3..0000000
--- a/assets/js/b2413e78.e50c880a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[61191],{3905:function(t,e,n){n.d(e,{Zo:function(){return o},kt:function(){return m}});var a=n(67294);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/b2b675dd.26773632.js b/assets/js/b2b675dd.26773632.js
new file mode 100644
index 0000000..e5ea248
--- /dev/null
+++ b/assets/js/b2b675dd.26773632.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[90533],{28017:function(e){e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":2,"totalCount":18,"previousPage":null,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b2b675dd.6bf9c4c4.js b/assets/js/b2b675dd.6bf9c4c4.js
deleted file mode 100644
index 526a774..0000000
--- a/assets/js/b2b675dd.6bf9c4c4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[90533],{28017:function(e){e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":null,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b2f554cd.7ca25103.js b/assets/js/b2f554cd.7ca25103.js
new file mode 100644
index 0000000..90c64db
--- /dev/null
+++ b/assets/js/b2f554cd.7ca25103.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[11477],{30010:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","metadata":{"permalink":"/blog/2021/10/01/openEuler","source":"@site/blog/2021-10-01-openEuler.md","title":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","descri [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.8026a524.js b/assets/js/b2f554cd.8026a524.js
deleted file mode 100644
index ee33901..0000000
--- a/assets/js/b2f554cd.8026a524.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[11477],{30010:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","metadata":{"permalink":"/blog/2021/10/01/openEuler","source":"@site/blog/2021-10-01-openEuler.md","title":"Apache APISIX \u793e\u533a\u6210\u5458\u52a9\u529b openEuler \u53d1\u5e03\u7b2c\u4e00\u4e2a\u793e\u533a\u521b\u65b0\u7248","descri [...]
\ No newline at end of file
diff --git a/assets/js/b4186f86.720dc3fc.js b/assets/js/b4186f86.720dc3fc.js
deleted file mode 100644
index 4b45dee..0000000
--- a/assets/js/b4186f86.720dc3fc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37623],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return s}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/b46e4adf.a89b57a4.js b/assets/js/b46e4adf.a89b57a4.js
deleted file mode 100644
index 407eefb..0000000
--- a/assets/js/b46e4adf.a89b57a4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[80145],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/b6a62f16.8d96ca22.js b/assets/js/b6a62f16.8d96ca22.js
deleted file mode 100644
index 8a6982c..0000000
--- a/assets/js/b6a62f16.8d96ca22.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[70412],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/b6a62f16.f423795e.js b/assets/js/b6a62f16.f423795e.js
new file mode 100644
index 0000000..5fec025
--- /dev/null
+++ b/assets/js/b6a62f16.f423795e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[70412],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/b78a81d0.c9950167.js b/assets/js/b78a81d0.c9950167.js
deleted file mode 100644
index 2bcf9aa..0000000
--- a/assets/js/b78a81d0.c9950167.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[21582],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/b7f1d279.6ab246b7.js b/assets/js/b7f1d279.6ab246b7.js
deleted file mode 100644
index 89db028..0000000
--- a/assets/js/b7f1d279.6ab246b7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[903],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return h}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a [...]
\ No newline at end of file
diff --git a/assets/js/b9dc0898.2f504a08.js b/assets/js/b9dc0898.2f504a08.js
new file mode 100644
index 0000000..5bb71d1
--- /dev/null
+++ b/assets/js/b9dc0898.2f504a08.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36939],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/b9dc0898.3febdede.js b/assets/js/b9dc0898.3febdede.js
deleted file mode 100644
index 159789e..0000000
--- a/assets/js/b9dc0898.3febdede.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36939],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/bb86d006.5ce0f8d6.js b/assets/js/bb86d006.5ce0f8d6.js
deleted file mode 100644
index 02c6cbd..0000000
--- a/assets/js/bb86d006.5ce0f8d6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40788],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return h}});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/bb86d006.e68e83c0.js b/assets/js/bb86d006.e68e83c0.js
new file mode 100644
index 0000000..cb7088a
--- /dev/null
+++ b/assets/js/bb86d006.e68e83c0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40788],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return d}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/bcead195.9fd1ca83.js b/assets/js/bcead195.9fd1ca83.js
deleted file mode 100644
index 2461aec..0000000
--- a/assets/js/bcead195.9fd1ca83.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[56698],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/bef75d89.e1102893.js b/assets/js/bef75d89.e1102893.js
deleted file mode 100644
index 4cd7bdd..0000000
--- a/assets/js/bef75d89.e1102893.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[39551],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/bf337c45.60d803fc.js b/assets/js/bf337c45.60d803fc.js
deleted file mode 100644
index 16ffce0..0000000
--- a/assets/js/bf337c45.60d803fc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[24656],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/bfb26af8.d55410f2.js b/assets/js/bfb26af8.d55410f2.js
new file mode 100644
index 0000000..168360b
--- /dev/null
+++ b/assets/js/bfb26af8.d55410f2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38935],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/bfb26af8.e3d165fd.js b/assets/js/bfb26af8.e3d165fd.js
deleted file mode 100644
index 59ba72b..0000000
--- a/assets/js/bfb26af8.e3d165fd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38935],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/c38a7190.194f7e21.js b/assets/js/c38a7190.194f7e21.js
deleted file mode 100644
index 81a1796..0000000
--- a/assets/js/c38a7190.194f7e21.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28751],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/c38a7190.93d5a9ae.js b/assets/js/c38a7190.93d5a9ae.js
new file mode 100644
index 0000000..b7e0f9d
--- /dev/null
+++ b/assets/js/c38a7190.93d5a9ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28751],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/c416f2d2.51411d14.js b/assets/js/c416f2d2.51411d14.js
deleted file mode 100644
index fcb6a06..0000000
--- a/assets/js/c416f2d2.51411d14.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[73792],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/c56f5e51.42ad542c.js b/assets/js/c56f5e51.42ad542c.js
deleted file mode 100644
index 0c9eb42..0000000
--- a/assets/js/c56f5e51.42ad542c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7160],{3905:function(e,a,t){t.d(a,{Zo:function(){return A},kt:function(){return h}});var n=t(67294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t, [...]
\ No newline at end of file
diff --git a/assets/js/c7553d68.c0ba69a7.js b/assets/js/c7553d68.c0ba69a7.js
deleted file mode 100644
index ccc0b2b..0000000
--- a/assets/js/c7553d68.c0ba69a7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[22612],{3905:function(t,e,n){n.d(e,{Zo:function(){return c},kt:function(){return m}});var a=n(67294);function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/c9b449f4.cbb8b33e.js b/assets/js/c9b449f4.cbb8b33e.js
deleted file mode 100644
index 50a772d..0000000
--- a/assets/js/c9b449f4.cbb8b33e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[33487],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/d00e343a.a4994461.js b/assets/js/d00e343a.a4994461.js
deleted file mode 100644
index 1a10455..0000000
--- a/assets/js/d00e343a.a4994461.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38617],{3905:function(t,e,n){n.d(e,{Zo:function(){return p},kt:function(){return k}});var r=n(67294);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/d18db9b0.7d0c5238.js b/assets/js/d18db9b0.7d0c5238.js
new file mode 100644
index 0000000..5150f22
--- /dev/null
+++ b/assets/js/d18db9b0.7d0c5238.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17825],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/d18db9b0.e8c40b18.js b/assets/js/d18db9b0.e8c40b18.js
deleted file mode 100644
index 6caafb0..0000000
--- a/assets/js/d18db9b0.e8c40b18.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17825],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return O}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/d6f03799.25dd1849.js b/assets/js/d6f03799.25dd1849.js
deleted file mode 100644
index ec164a5..0000000
--- a/assets/js/d6f03799.25dd1849.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[13032],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return h}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/d713a29e.dfa7a47b.js b/assets/js/d713a29e.dfa7a47b.js
deleted file mode 100644
index 197115c..0000000
--- a/assets/js/d713a29e.dfa7a47b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[97614],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return k}});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/d842c49e.8a389057.js b/assets/js/d842c49e.8a389057.js
deleted file mode 100644
index c3f2413..0000000
--- a/assets/js/d842c49e.8a389057.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[10252],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/d8ddfb32.8ff41879.js b/assets/js/d8ddfb32.8ff41879.js
deleted file mode 100644
index af1fd1f..0000000
--- a/assets/js/d8ddfb32.8ff41879.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[41564],{3905:function(e,t,a){a.d(t,{Zo:function(){return o},kt:function(){return m}});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/d9f294ca.bd377cb8.js b/assets/js/d9f294ca.bd377cb8.js
deleted file mode 100644
index 94b45f6..0000000
--- a/assets/js/d9f294ca.bd377cb8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40506],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return d}});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t [...]
\ No newline at end of file
diff --git a/assets/js/dc10aa7a.41637e30.js b/assets/js/dc10aa7a.41637e30.js
new file mode 100644
index 0000000..a0d9ab0
--- /dev/null
+++ b/assets/js/dc10aa7a.41637e30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[92074],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return d}});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/dc10aa7a.f83c9351.js b/assets/js/dc10aa7a.f83c9351.js
deleted file mode 100644
index 98a82f1..0000000
--- a/assets/js/dc10aa7a.f83c9351.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[92074],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return d}});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/dd48f954.b660af77.js b/assets/js/dd48f954.b660af77.js
deleted file mode 100644
index f02bb96..0000000
--- a/assets/js/dd48f954.b660af77.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28350],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/dde0bf3a.2e56d86f.js b/assets/js/dde0bf3a.2e56d86f.js
deleted file mode 100644
index ced0dd0..0000000
--- a/assets/js/dde0bf3a.2e56d86f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2655],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/df0f9deb.c58f5e67.js b/assets/js/df0f9deb.c58f5e67.js
deleted file mode 100644
index 0a8c53c..0000000
--- a/assets/js/df0f9deb.c58f5e67.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6386],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return h}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/df72488e.9b0d88de.js b/assets/js/df72488e.9b0d88de.js
deleted file mode 100644
index cf6950a..0000000
--- a/assets/js/df72488e.9b0d88de.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[40723],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/e02da2c5.515d8913.js b/assets/js/e02da2c5.515d8913.js
deleted file mode 100644
index e3f8403..0000000
--- a/assets/js/e02da2c5.515d8913.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95194],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/e02da2c5.ebe68fd8.js b/assets/js/e02da2c5.ebe68fd8.js
new file mode 100644
index 0000000..3a8521f
--- /dev/null
+++ b/assets/js/e02da2c5.ebe68fd8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95194],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return f}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/e056ceac.e39626e1.js b/assets/js/e056ceac.e39626e1.js
deleted file mode 100644
index a671a01..0000000
--- a/assets/js/e056ceac.e39626e1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[43743],{3905:function(e,t,a){a.d(t,{Zo:function(){return c},kt:function(){return m}});var p=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);t&&(p=p.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/e5cae35a.5b64792a.js b/assets/js/e5cae35a.5b64792a.js
new file mode 100644
index 0000000..f78f08a
--- /dev/null
+++ b/assets/js/e5cae35a.5b64792a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[44310],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return h}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/e5cae35a.973b72cd.js b/assets/js/e5cae35a.973b72cd.js
deleted file mode 100644
index b81d06f..0000000
--- a/assets/js/e5cae35a.973b72cd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[44310],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return h}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/e71302a4.dcef8dd5.js b/assets/js/e71302a4.dcef8dd5.js
deleted file mode 100644
index 5e51f9f..0000000
--- a/assets/js/e71302a4.dcef8dd5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[44984],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/e94802f7.df78d240.js b/assets/js/e94802f7.df78d240.js
deleted file mode 100644
index 9d72a4e..0000000
--- a/assets/js/e94802f7.df78d240.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[82271],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/ea06f8b4.d78b0626.js b/assets/js/ea06f8b4.d78b0626.js
deleted file mode 100644
index b638324..0000000
--- a/assets/js/ea06f8b4.d78b0626.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9345],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n, [...]
\ No newline at end of file
diff --git a/assets/js/eaa3fcd7.0207cfff.js b/assets/js/eaa3fcd7.0207cfff.js
deleted file mode 100644
index e305c63..0000000
--- a/assets/js/eaa3fcd7.0207cfff.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[20994],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/eaf65b9e.c195ceb6.js b/assets/js/eaf65b9e.c195ceb6.js
deleted file mode 100644
index eb576f6..0000000
--- a/assets/js/eaf65b9e.c195ceb6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7517],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return I}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r, [...]
\ No newline at end of file
diff --git a/assets/js/f1020d56.fd3f1ed5.js b/assets/js/f1020d56.fd3f1ed5.js
deleted file mode 100644
index 2766080..0000000
--- a/assets/js/f1020d56.fd3f1ed5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[63921],{3905:function(e,t,a){a.d(t,{Zo:function(){return u},kt:function(){return h}});var n=a(67294);function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/f3a06a56.7d2fbee7.js b/assets/js/f3a06a56.7d2fbee7.js
deleted file mode 100644
index 0d97fbd..0000000
--- a/assets/js/f3a06a56.7d2fbee7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[48269],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/f3a06a56.ec65d85e.js b/assets/js/f3a06a56.ec65d85e.js
new file mode 100644
index 0000000..3049b9d
--- /dev/null
+++ b/assets/js/f3a06a56.ec65d85e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[48269],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return m}});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/f4a80879.352a8962.js b/assets/js/f4a80879.352a8962.js
deleted file mode 100644
index 6662a74..0000000
--- a/assets/js/f4a80879.352a8962.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[81070],{3905:function(e,t,a){a.d(t,{Zo:function(){return s},kt:function(){return d}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function p(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/f60a5573.8cc895b3.js b/assets/js/f60a5573.8cc895b3.js
deleted file mode 100644
index bcfd926..0000000
--- a/assets/js/f60a5573.8cc895b3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[28684],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return g}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/f773b7cd.bb199e47.js b/assets/js/f773b7cd.bb199e47.js
deleted file mode 100644
index 4a971d4..0000000
--- a/assets/js/f773b7cd.bb199e47.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[26851],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/f92d4cb4.de3fa99b.js b/assets/js/f92d4cb4.de3fa99b.js
deleted file mode 100644
index 13d8c24..0000000
--- a/assets/js/f92d4cb4.de3fa99b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[90346],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return I}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/f96d8335.c6691c8b.js b/assets/js/f96d8335.c6691c8b.js
deleted file mode 100644
index fb1f5df..0000000
--- a/assets/js/f96d8335.c6691c8b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[14366],{3905:function(e,t,r){r.d(t,{Zo:function(){return l},kt:function(){return f}});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r [...]
\ No newline at end of file
diff --git a/assets/js/facb7e12.c51ff8ed.js b/assets/js/facb7e12.c51ff8ed.js
deleted file mode 100644
index 96ab143..0000000
--- a/assets/js/facb7e12.c51ff8ed.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[17439],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return g}});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/fb587670.31bdb192.js b/assets/js/fb587670.31bdb192.js
deleted file mode 100644
index a2bcb96..0000000
--- a/assets/js/fb587670.31bdb192.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[62008],{3905:function(e,t,a){a.d(t,{Zo:function(){return u},kt:function(){return h}});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a [...]
\ No newline at end of file
diff --git a/assets/js/fd01d923.c1ee56a0.js b/assets/js/fd01d923.c1ee56a0.js
deleted file mode 100644
index aa33688..0000000
--- a/assets/js/fd01d923.c1ee56a0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[69769],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n [...]
\ No newline at end of file
diff --git a/assets/js/ff677376.45544723.js b/assets/js/ff677376.45544723.js
deleted file mode 100644
index 1323fee..0000000
--- a/assets/js/ff677376.45544723.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[55901],{34712:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"/blog/tags/user-case","name":"User Case","count":11,"permalink":"/blog/tags/user-case"}')}}]);
\ No newline at end of file
diff --git a/assets/js/main.16bacc18.js b/assets/js/main.16bacc18.js
deleted file mode 100644
index db74a64..0000000
--- a/assets/js/main.16bacc18.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.16bacc18.js.LICENSE.txt */
-(self.webpackChunk=self.webpackChunk||[]).push([[40179],{99782:function(e,n,i){"use strict";i.r(n),n.default={title:"Apache APISIX\xae --  Cloud-Native API Gateway",tagline:"Apache APISIX is a dynamic, real-time, high-performance Cloud-Native API gateway, based on the Nginx library and etcd.",url:"https://apisix.apache.org/",baseUrl:"/",organizationName:"Apache",projectName:"apisix-website",favicon:"img/favicon.png",customFields:{tagline2:"Apache APISIX software provides rich traffic man [...]
\ No newline at end of file
diff --git a/assets/js/main.df478bd3.js b/assets/js/main.df478bd3.js
new file mode 100644
index 0000000..03f282f
--- /dev/null
+++ b/assets/js/main.df478bd3.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.df478bd3.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[40179],{99782:function(e,n,i){"use strict";i.r(n),n.default={title:"Apache APISIX\xae --  Cloud-Native API Gateway",tagline:"Apache APISIX is a dynamic, real-time, high-performance Cloud-Native API gateway, based on the Nginx library and etcd.",url:"https://apisix.apache.org/",baseUrl:"/",organizationName:"Apache",projectName:"apisix-website",favicon:"img/favicon.png",customFields:{tagline2:"Apache APISIX software provides rich traffic man [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.e7a16a26.js.LICENSE.txt b/assets/js/main.df478bd3.js.LICENSE.txt
similarity index 100%
rename from zh/assets/js/main.e7a16a26.js.LICENSE.txt
rename to assets/js/main.df478bd3.js.LICENSE.txt
diff --git a/assets/js/runtime~main.083e7f2c.js b/assets/js/runtime~main.083e7f2c.js
deleted file mode 100644
index 37f673c..0000000
--- a/assets/js/runtime~main.083e7f2c.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,f,c,b,d={},a={};function t(e){var f=a[e];if(void 0!==f)return f.exports;var c=a[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,t),c.loaded=!0,c.exports}t.m=d,t.c=a,e=[],t.O=function(f,c,b,d){if(!c){var a=1/0;for(u=0;u<e.length;u++){c=e[u][0],b=e[u][1],d=e[u][2];for(var n=!0,r=0;r<c.length;r++)(!1&d||a>=d)&&Object.keys(t.O).every((function(e){return t.O[e](c[r])}))?c.splice(r--,1):(n=!1,d<a&&(a=d));if(n){e.splice(u--,1);var o=b();void  [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.a082ee80.js b/assets/js/runtime~main.a082ee80.js
new file mode 100644
index 0000000..df157d7
--- /dev/null
+++ b/assets/js/runtime~main.a082ee80.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,f,c,b,d={},a={};function t(e){var f=a[e];if(void 0!==f)return f.exports;var c=a[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,t),c.loaded=!0,c.exports}t.m=d,t.c=a,e=[],t.O=function(f,c,b,d){if(!c){var a=1/0;for(u=0;u<e.length;u++){c=e[u][0],b=e[u][1],d=e[u][2];for(var n=!0,r=0;r<c.length;r++)(!1&d||a>=d)&&Object.keys(t.O).every((function(e){return t.O[e](c[r])}))?c.splice(r--,1):(n=!1,d<a&&(a=d));if(n){e.splice(u--,1);var o=b();void  [...]
\ No newline at end of file
diff --git a/blog/2020/12/11/beike-how-to-build-gateway-based-on-apache-apisix/index.html b/blog/2020/12/11/beike-how-to-build-gateway-based-on-apache-apisix/index.html
deleted file mode 100644
index 63b3bd9..0000000
--- a/blog/2020/12/11/beike-how-to-build-gateway-based-on-apache-apisix/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">贝壳找房:如何基于 Apache APISIX 搭建网关 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<img src="https://static.apiseven.com/2020/05/1588756665-Snipaste_2020-05-06_17-17-29.png" alt="Apache APISIX 架构图">
-<img src="https://static.apiseven.com/2020/05/1588756618-Snipaste_2020-05-06_17-16-13.png" alt="Apache APISIX 技术亮点"></p><p>对于网关的技术要求,一是要性能好,能够支撑大流量的接入,二是要稳定,不能出问题。</p><p>选型的原则就是基于或者借鉴开源项目重构一个更加稳定的版本,能够保证接入更大的流量,刚开始的流量还少,做这样的大动作是完全可以接受的。评估完利弊后和领导沟通了一下想法,得到领导的肯定后就决定搞起,这时脑海想的第一个就是 Kong 了,大名鼎鼎的开源网关。于是就去官网浏览了一番,周边文章也看了些,第一印象就是这个项目很不错,能够满足用户的大多数需求,性能还稳定,就是它了。兴高采烈地 clone 了代码开始阅读起来,一天两天若干天过去了,还是一头雾水的样子,想想也是,Kong 能提供这么多的功能,其代码的复杂度可想而�
 ��。</p><p>这时几个问题出现在我的脑海里,我一个人多久能啃下来 Kong 呢?然后还要构建一个适合自己的项目,又需要多久呢 [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
index 37ed7f6..decde2e 100644
--- a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
+++ b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Envoy and Apache APISIX: Another way to implement the Envoy filter | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name= [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.</p><p><img src="https://static.apiseven.com/filters.png" alt="Envoy filter"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="expansion-method"></a>Expansion method<a class="hash-link" href="#expansion-method" title="Direct link to heading">#</a></h3><p>The existing filters may not meet the user&#x27;s cust [...]
-In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor anchor__h4 anchorWithHideOnScrollNavbar_3R7-" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+In the example, we configured plugin <code>uri-blocker</code> for the route whose prefix is ​​<code>/foo</code>, as well as the block rule of the plugin and the response status when a block is required.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor anchor__h4 anchorWithHideOnScrollNavbar_3R7-" id="second-step-parse-request"></a>Second step, parse request<a class="hash-link" href="#second-step-parse-request" title="Direct link to heading">#</a></h4><p>We encapsulated the client [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html b/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
deleted file mode 100644
index 4f9138e..0000000
--- a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">初探 Kubernetes Service APIs | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix. [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team/index.html b/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team/index.html
deleted file mode 100644
index 4aa964d..0000000
--- a/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 贡献者专访 | 普华永道华南数据安全与隐私保护团队高级安全顾问王鹏诚 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" co [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
index 5fd58de..d8ac7de 100644
--- a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
+++ b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
@@ -16,14 +16,14 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Run Ingress APISIX on Amazon EKS | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">&quot;headers&quot;</span><span class="token builtin class-name">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</s [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">&quot;headers&quot;</span><span class="token builtin class-name">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</s [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/02/08/stable-product-delivery-with-cypress/index.html b/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
index f5068f2..72e1c94 100644
--- a/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
+++ b/blog/2021/02/08/stable-product-delivery-with-cypress/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Stable Product Delivery with Cypress | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/02/26/install-apache-apisix-from-helm-charts/index.html b/blog/2021/02/26/install-apache-apisix-from-helm-charts/index.html
index 26f9518..6a3eca4 100644
--- a/blog/2021/02/26/install-apache-apisix-from-helm-charts/index.html
+++ b/blog/2021/02/26/install-apache-apisix-from-helm-charts/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Install Apache APISIX from Helm Charts | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="htt [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME                    CHART VERSION   APP VERSION     DESCRIPTION</span></span><span class="token-line" style="color:#393A34"><span class="token plain">apisix/apisix           </span><span class="token number" style="color:#36acaa">0.1</span><span class="token plain">.2           </span><span class="token number" style="color:#36acaa">2.1</span><span class="token plain">.0           A Helm chart </sp [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME: apisix-gw</span></span><span class="token-line" style="color:#393A34"><span class="token plain">LAST DEPLOYED: Fri Feb </span><span class="token number" style="color:#36acaa">19</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:34:14 </span><span class="token number" style="color:#36acaa">2021</span><span class="token plai [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/03/02/get-front-end-test-coverage-with-cypress/index.html b/blog/2021/03/02/get-front-end-test-coverage-with-cypress/index.html
index 6b58de4..68dd799 100644
--- a/blog/2021/03/02/get-front-end-test-coverage-with-cypress/index.html
+++ b/blog/2021/03/02/get-front-end-test-coverage-with-cypress/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Get Front-End Test Coverage with Cypress | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="h [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/05/24/Tencent-Games/index.html b/blog/2021/05/24/Tencent-Games/index.html
deleted file mode 100644
index d2dd5de..0000000
--- a/blog/2021/05/24/Tencent-Games/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">支持 10 亿日流量的基础设施:当 Apahce APISIX 遇上腾讯 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-(这里需要澄清的是,本文讨论的网关特指 API Gateway ,即针对后台服务以 API 提供服务的场景。)</p><p>在上面的这个图中,有时 LB 同时也起到网关的作用,比如 k8s 的 Ingress 组件。</p><p>有了网关这个组件后,我们就可以将传统架构的通用功能下沉到网关,这样一来我们获得了很多的好处:</p><ul><li>网关可以独立迭代,不再需要业务服务配合。</li><li>与语言无关,可以配置专门的团队维护。</li></ul><p>但是网关模式也有自己的缺点:</p><ul><li>多了一次转发,延迟变高,排查问题复杂度变高。</li><li>网关如果不能正常工作,可能会成为整个平台的瓶颈。</li></ul><p>如何平衡好网关模式的好处和缺点,不仅十分考验业务团队的实力,更是与网关的选型息息相关。接下来,我们要请出本文要介绍的两个重点对象:腾讯 OTeam 和 Apache APISIX。</p><h2><a aria-hidden="
 true" tabindex="-1" class="anchor anchor__h2 anchor [...]
-OTeam 的运作参考下图:</p><p><img src="https://static.apiseven.com/202108/1630640321189-46cf2163-552c-4816-bdf6-ef4f58702667.png" alt="OTeam 的运营策略"></p><p>可以看到 OTeam 的特性迭代是一个完整的闭环:</p><ul><li>用户通过 Issue 反馈问题和需求</li><li>OTeam 的成员 在 周会 上讨论解决方案,或者直接在 Issue 中跟进</li><li>按照解决方案实现特性 or 修复 Bug</li><li>代码 Review 后,经历 CI 合入到主干中,再视情况需不需要打包镜像发版
-这个流程其实和 GitHub 多数开源项目的贡献过程是没区别的,关键点在于:</li><li>解决了 Issue 后,腾讯工程师会判断这个问题对于社区来说,是否也是一个共性问题。如果是,则会发 PR 到社区的仓库去。</li><li>腾讯 OTeam 会定期 Review Apache APISIX 的新特性,判断其是否稳定、是否对腾讯内部也是一个痛点。如果答案是肯定的,合入相关代码。</li></ul><p>最早期的时候,OTeam 会每 12 小时,自动合入社区代码到内部仓库中,以保证我们与社区能够共同前进,但这种做法带来了几个问题:</p><ul><li>合入的代码通过目前的集成测试只能保证功能 正确性 却没法保证 稳定性,很多偶现的问题都是在并发中发生的。</li><li>合入的代码,有时会产生上游的多个 PR 在逻辑上出现冲突的问题,但是各自的 CI 无法检测出来,只有当合入主干后,才会发现主干的代码产生
 了问题。</li></ul><p>出于以上原因,现在 OTeam 转为定期 Review 后合入所需特性的代码的策略。</p><h2><a aria-hidd [...]
-与此同时,OTeam 也将开发的一些通用的特性贡献到了社区,为社区带来了不少 Contributor。目前 OTeam 团队中,有两位成员同时也是 ApacheAPISIX 社区的 PMC,OTeam 为社区贡献了超过 50 个PR。同时,我们相信 OTeam 今后还会与 Apache APISIX 社区开展更多的合作。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="腾讯内部特性介绍"></a>腾讯内部特性介绍<a class="hash-link" href="#腾讯内部特性介绍" title="Direct link to heading">#</a></h2><p>OTeam 的主要职责是维护 Apache APISIX 的一些针对腾讯内部的特性,那么这些特性都是哪些,又解决了什么样的痛点呢?</p><h3><a aria-hidden="true" tabindex="-1" class="anc [...]
-我们希望这些例子能起到抛砖引玉的作用,鼓励大家去发掘更多 Apache APISIX 的使用场景,更好的把 Apache APISIX 这个好用的工具用起来。比如在腾讯云团队,就有同学利用网关实现了一些腾讯云平台强制要求的 API 规范,将这逻辑下沉到了网关。</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="最后的话"></a>最后的话<a class="hash-link" href="#最后的话" title="Direct link to heading">#</a></h2><p>转眼在腾讯内帮助各个团队维护 Apache APISIX 也一年多了,在这个过程中,OTeam 既帮助业务团队解决了他们的痛点,也不断完善了 Apache APISIX 在腾讯内部的特性,同时也间接推动了社区的发展,实现了共赢。
-如果读者所在公司如果还没有落地网关的话,可以了解下 Apahce APISIX。已经落地了网关的读者,也希望本文能够给你们带来一点在网关落地上的灵感和帮助。</p><blockquote><p>欢迎感兴趣的同学访问 bilibili <a href="https://www.bilibili.com/video/BV1yK4y1G7CP/" target="_blank" rel="noopener noreferrer">Apache APISIX 在腾讯游戏的应用</a>,观看视频。</p></blockquote></div><footer class="row docusaurus-mt-lg blogPostDetailsFull_3kfx"><div class="col"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/user-c [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git "a/blog/2021/05/25/Apache APISIX 2.6.0-Release \346\255\243\345\274\217\345\217\221\345\270\203/index.html" "b/blog/2021/05/25/Apache APISIX 2.6.0-Release \346\255\243\345\274\217\345\217\221\345\270\203/index.html"
deleted file mode 100644
index dc125bf..0000000
--- "a/blog/2021/05/25/Apache APISIX 2.6.0-Release \346\255\243\345\274\217\345\217\221\345\270\203/index.html"	
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 2.6.0-Release 正式发布 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-目前 APISIX 内置的服务发现功能已支持下列外部服务:</p><ol><li>DNS</li><li>Consul KV mode</li><li>Eureka</li><li>Nacos</li></ol><p>▌<strong>支持:配置 IPv6 的 DNS resolver</strong></p><p>之前配置 APISIX 的 DNS resolver 时,只能配置 IPv4 服务器。从 2.6 版本之后,我们加上了对 IPv6 DNS 服务器的支持。</p><p>现在配置 DNS resolver 的时候,可以写上 IPv6 的服务器地址了。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="下载"></a>下载<a class="hash-link" href="#下载" title="Direct link to heading">#</a></h2><p>下载 Apache APISI [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/03/experience-share-from-Apache-APISIX-committer/index.html b/blog/2021/06/03/experience-share-from-Apache-APISIX-committer/index.html
deleted file mode 100644
index db3b3dd..0000000
--- a/blog/2021/06/03/experience-share-from-Apache-APISIX-committer/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">来自 Apache APISIX committer 的经验分享 —— 编程之夏专访 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content= [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/06/apisix-two-years/index.html b/blog/2021/06/06/apisix-two-years/index.html
deleted file mode 100644
index 312d1ae..0000000
--- a/blog/2021/06/06/apisix-two-years/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 开源 2 周年! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apac [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017/index.html b/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017/index.html
index fed24a3..82637e0 100644
--- a/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017/index.html
+++ b/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX not affected by NGINX CVE-2021-23017 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image"  [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/06/10/Apache-APISIX-and-Envoy-performance-comparison/index.html b/blog/2021/06/10/Apache-APISIX-and-Envoy-performance-comparison/index.html
deleted file mode 100644
index 10685ad..0000000
--- a/blog/2021/06/10/Apache-APISIX-and-Envoy-performance-comparison/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 和 Envoy 性能大比拼 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  access_log off;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  location = /hello {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    echo_duplicate 400 &quot;1234567890&quot;;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span></span><span class="token-line" style="color:#393A [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    filter_chains:</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    - filters:</span></span><span class="token-line" style="color:#393A34"><span class="token plain">      - name: envoy.http_connection_manager</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        config:</span></span><span class="token-line" style="color:#3 [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability/index.html b/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability/index.html
deleted file mode 100644
index 9a90ce3..0000000
--- a/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Chaos Mesh 助力 Apache APISIX 提升稳定性 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https:// [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement/index.html b/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement/index.html
deleted file mode 100644
index ca3106e..0000000
--- a/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX Dashboard 访问控制绕过漏洞公告(CVE-2021-33190) | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image"  [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released/index.html b/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released/index.html
deleted file mode 100644
index 81a2007..0000000
--- a/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins/index.html b/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins/index.html
deleted file mode 100644
index 6fb40d3..0000000
--- a/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 Java 编写 Apache APISIX 插件 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.apisix.plugin.runner.HttpRequest;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.apisix.plugin.runner.HttpResponse;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.springframework.stereotype.Component;</span></span><span class="token-line" style="color:#393A34"><span class="token  [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">@Component</span></span><span class="token-line" style="color:#393A34"><span class="token plain">public class TokenValidator implements PluginFilter {</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    public String name() {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        return &quot;TokenValidator&quot;;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span></span><span class="token-line" style="color:#393A3 [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    public Mono&lt;Void&gt; filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        return chain.filter(request, response);</span></span><span class="token-line" style="color:#393A34"><span [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import com.google.gson.Gson;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.apisix.plugin.runner.HttpRequest;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.apache.apisix.plugin.runner.HttpResponse;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import org.sp [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import java.util.HashMap;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">import java.util.Map;</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">@Component</span></span><span class="token-line" style="color:#393A34"><span class="token plain">public class TokenValidator implements PluginFilter {</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    public String name() {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        return &quot;TokenValidator&quot;;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span></span><span class="token-line" style="color:#393A3 [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    public Mono&lt;Void&gt; filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        // parse `conf` to json</span></span><span class="token-line" style="color:#393A34"><span class="token pl [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        // get configuration parameters</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        String token = request.getHeader((String) conf.get(&quot;validate_header&quot;));</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        String validate_url = (String) conf.get(&quot;validate_url&quot;);</span></span><span class="to [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        // token verification results</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        if (!flag) {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">            String rejected_code = (String) conf.get(&quot;rejected_code&quot;);</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        return chain.filter(request, response);</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    private Boolean validate(String token, String validate_url) {</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        //TODO: improve the validation process</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        return true;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span>< [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast/index.html b/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast/index.html
deleted file mode 100644
index 0a9a48c..0000000
--- a/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Rancher × Apache APISIX: 极速部署更好用的开源网关和 Ingress Controller | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-在终端下测试是否代理成功:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token plain">root@apisix:~$ </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://172.18.0.2:32763/get -H </span><span class= [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/28/why-we-need-Apache-APISIX/index.html b/blog/2021/06/28/why-we-need-Apache-APISIX/index.html
deleted file mode 100644
index cd3c07a..0000000
--- a/blog/2021/06/28/why-we-need-Apache-APISIX/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">有了 NGINX 和 Kong,为什么还需要 Apache APISIX | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/29/release-apache-apisix-2.7-en/index.html b/blog/2021/06/29/release-apache-apisix-2.7-en/index.html
index 3bd0bf0..f47cb08 100644
--- a/blog/2021/06/29/release-apache-apisix-2.7-en/index.html
+++ b/blog/2021/06/29/release-apache-apisix-2.7-en/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.7.0 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/06/29/release-apache-apisix-2.7/index.html b/blog/2021/06/29/release-apache-apisix-2.7/index.html
deleted file mode 100644
index 11f3de6..0000000
--- a/blog/2021/06/29/release-apache-apisix-2.7/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 2.7.0-Release 正式发布 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/06/30/etcd3-support-HTTP-access-perfectly/index.html b/blog/2021/06/30/etcd3-support-HTTP-access-perfectly/index.html
deleted file mode 100644
index f0f7142..0000000
--- a/blog/2021/06/30/etcd3-support-HTTP-access-perfectly/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">差之毫厘:etcd 3 完美支持 HTTP 访问? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/07/06/celebrate-200-contributors/index.html b/blog/2021/07/06/celebrate-200-contributors/index.html
index b3f76b4..0c16f85 100644
--- a/blog/2021/07/06/celebrate-200-contributors/index.html
+++ b/blog/2021/07/06/celebrate-200-contributors/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX has over 200 contributors in GitHub main repo! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitt [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 Welcome to join the Apache APISIX community, welcome to use Apache APISIX!</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="contributors-say"></a>Contributors Say<a class="hash-link" href="#contributors-say" title="Direct link to heading">#</a></h2><p>When reaching 200 contributors, the contributors in the community sent their blessings to Apache APISIX. Here are what they want to say to Apache APISIX.</p><p><a href="https://githu [...]
-community activity</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="join-the-apache-apisix-community"></a>Join the Apache APISIX community<a class="hash-link" href="#join-the-apache-apisix-community" title="Direct link to heading">#</a></h2><p>Sincerely invite you to join the Apache APISIX open source community, let us work together to create the best API gateway in the cloud-native era!</p><p>There is no barrier to becoming an Ap [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+community activity</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="join-the-apache-apisix-community"></a>Join the Apache APISIX community<a class="hash-link" href="#join-the-apache-apisix-community" title="Direct link to heading">#</a></h2><p>Sincerely invite you to join the Apache APISIX open source community, let us work together to create the best API gateway in the cloud-native era!</p><p>There is no barrier to becoming an Ap [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/07/14/the-road-to-customization-of-Sina-Weibo-API-gateway-based-on-Apache-APISIX/index.html b/blog/2021/07/14/the-road-to-customization-of-Sina-Weibo-API-gateway-based-on-Apache-APISIX/index.html
deleted file mode 100644
index 95964b9..0000000
--- a/blog/2021/07/14/the-road-to-customization-of-Sina-Weibo-API-gateway-based-on-Apache-APISIX/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">基于 Apache APISIX,新浪微博 API 网关的定制化开发之路 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/07/21/Apache-APISIX-Kubernetes/index.html b/blog/2021/07/21/Apache-APISIX-Kubernetes/index.html
deleted file mode 100644
index 51b60ac..0000000
--- a/blog/2021/07/21/Apache-APISIX-Kubernetes/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX x Kubernetes:恰到好处|直播预告 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-从业 7 年,张晋涛对 Docker 和 Kubernetes 等容器化技术有大量实践和深入源码的研究,是业内多个知名大会讲师,PyCon China 核心组织者之一。同时著有 《Kubernetes 上手实践》和 《Docker 核心知识必知必会》等专栏。运营有公众号:MoeLove。</p><p><img src="https://static.apiseven.com/202108/1630382172445-cf20986b-c939-497e-86a4-92da7064ae97.PNG" alt="讲师介绍-张晋涛"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="关于-apache-apisix"></a>关于 Apache APISIX<a class="hash-link" href="#关于-apache-apisix" title="Direct link to heading">#< [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/07/25/apachecon-asia/index.html b/blog/2021/07/25/apachecon-asia/index.html
deleted file mode 100644
index ca3584a..0000000
--- a/blog/2021/07/25/apachecon-asia/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">ApacheCon Asia 2021:Apache APISIX 技术议题一览 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="h [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX/index.html b/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX/index.html
deleted file mode 100644
index a2eb35f..0000000
--- a/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">插件编排在 Apache APISIX 中的应用与实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c"> {</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">   &quot;uri&quot;: &quot;/get&quot;,</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">   &quot;methods&quot;: [&quot;GET&quot;],</span></span><span class="token-line" style="color:#393A34"><span class="token s [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">&quot;script&quot;</span><span class="token builtin class-name">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;local _M = {} </span><span class="token string entity" style="color:#36acaa">\n</span><span class="token string" style="color:#e3116c"> function _M.access(api_ctx) </span><span class="to [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="apache-apisix-dashboard"></a>Apache APISIX Dashboard<a class="hash-link" href="#apache-apisix-d [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">,</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&quot;4-5-6&quot;</span><span class="token builtin class-name">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string" style="color:#e3116c">&qu [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">&quot;rule&quot;</span><span class="token builtin class-name">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&quot;ro [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/07/28/release-apache-apisix-2.8-en/index.html b/blog/2021/07/28/release-apache-apisix-2.8-en/index.html
index 70aa0eb..aab5799 100644
--- a/blog/2021/07/28/release-apache-apisix-2.8-en/index.html
+++ b/blog/2021/07/28/release-apache-apisix-2.8-en/index.html
@@ -16,14 +16,14 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.8.0 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-👇👇👇</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="release-notes"></a>Release Notes<a class="hash-link" href="#release-notes" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="new-feature-independent-keepalive-connection-pool"></a>New feature: Independent Keepalive connection pool<a class="hash-link" href="#new-feature-independent-keep [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+👇👇👇</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="release-notes"></a>Release Notes<a class="hash-link" href="#release-notes" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="new-feature-independent-keepalive-connection-pool"></a>New feature: Independent Keepalive connection pool<a class="hash-link" href="#new-feature-independent-keep [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/07/28/release-apache-apisix-2.8/index.html b/blog/2021/07/28/release-apache-apisix-2.8/index.html
deleted file mode 100644
index 3310dd2..0000000
--- a/blog/2021/07/28/release-apache-apisix-2.8/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 2.8 正式发布,带来更多新功能! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/05/Kong-to-APISIX/index.html b/blog/2021/08/05/Kong-to-APISIX/index.html
deleted file mode 100644
index 05c0707..0000000
--- a/blog/2021/08/05/Kong-to-APISIX/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Kong-To-APISIX 迁移工具 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache. [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> kong-to-apisix</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> build</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/kong-to-apisix migrate --input kong.yaml --output apisix.yaml</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># migrate succeed</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><ol start="3"><li>使用 <code>apisix.yaml</code>配置 APISIX, 点击查看<a href="https://apisix.apache.org/docs/apisix/stand-alone" target="_blank" rel="noopener noreferrer">具体步骤</a [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> kong-to-apisix</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">./tools/setup.sh</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><ol start="2"><li><p>根据 Kong 的 Getting Started Guide,为 Kong 添加配置并进行测试:</p><p>a. 通过 Service 和 Route 暴露服务,进行路由转发</p><p>b. 设置 Rate Limiting 和 Proxy Caching 插件做限流缓存</p><p>c. 设置 Key Authentication 插件做认证</p><p>d. 通过 Upstream 和 Target 设置负载均衡</p></li></ [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">go run ./cmd/kong-to-apisix/main.go</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><ol start="5"><li>在 APISIX 一侧测试迁移过后的路由、负载均衡、插件等是否正常运行</li></ol><p>a. 测试 key auth 插件</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_ [...]
-欢迎任何对这个项目感兴趣的人一同来为这个项目作贡献!有任何问题都可以在仓库的 Issues 区讨论。</p></div><footer class="row docusaurus-mt-lg blogPostDetailsFull_3kfx"><div class="col"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/technology">Technology</a></li></ul></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/06/using-apache-apisix-to-improve-the-observability-of-nginx/index.html b/blog/2021/08/06/using-apache-apisix-to-improve-the-observability-of-nginx/index.html
deleted file mode 100644
index af52443..0000000
--- a/blog/2021/08/06/using-apache-apisix-to-improve-the-observability-of-nginx/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">如何利用 Apache APISX 提升 Nginx 的可观测性 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-在 Nginx 之外安装采集模块,那么在采集指标上就会有限制,只能拿到 Nginx 暴露出来的信息,没有暴露的内部信息是拿不到的。</p><p>另外,由于 Nginx Amplify SaaS 是一个 SaaS 服务,需要通过公网将采集到的数据传到服务端,这会带来一些安全隐患,同时把一些企业用户阻挡在外面。或许 Nginx Amplify 的目标群体是 Nginx plus 这样的企业用户,不是开源用户。</p><p>另外,Nginx Amplify SaaS 社区也不活跃,已经停摆 2 年。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="nginx-的缺陷"></a>Nginx 的缺陷<a class="hash-link" href="#nginx-的缺陷" title="Direct link to heading">#</a></h3><p>Nginx 在 Events 收集上自身有缺陷,这里列举 [...]
-在使用 Prometheus 时,如果配置了 URI 级别的 metrics 指标的统计,会导致整个 metrics 急剧膨胀。因为 URI 级别的服务可能有几十个,每个 metrics 后面可能有许多 labels,这会降低网关性能,增加 metrics 获取难度。<strong>使用 ALS 方案,通过流的方式将数据发送给 SkyWalking,把计算的事情交给 SkyWalking,后续也方便查询</strong>,不会出现每隔几秒钟拉取一次非常庞大的数据的情况。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="将-events-整合到-skywalking"></a>将 Events 整合到 SkyWalking<a class="hash-link" href="#将-events-整合到-skywalking" title="Direct link to heading">#</a></h3>< [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud/index.html b/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud/index.html
deleted file mode 100644
index 155d4fa..0000000
--- a/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 在移动云的应用 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apach [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/09/Apache-APISIX-in-Quliankeji/index.html b/blog/2021/08/09/Apache-APISIX-in-Quliankeji/index.html
deleted file mode 100644
index e9bfd1f..0000000
--- a/blog/2021/08/09/Apache-APISIX-in-Quliankeji/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" co [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-ng)</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="为什么选择-apache-apisix"></a>为什么选择 Apache APISIX<a class="hash-link" href="#为什么选择-apache-apisix" title="Direct link to heading">#</a></h2><p>在 Apache APISIX 之前,趣链科技 BaaS 平台已经在使用 Kong 了,但是后来 Kong 被放弃了。</p><p><strong>为什么放弃 Kong?</strong></p><p>Kong 使用 PostgreSQL 来存储它的信息,这显然不是一个好方式。</p><p><img src="https://static.apiseven.com/202108/1630648907559-71716f82-6740-468c-afe0-49daa426d93a.pn [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/10/apisix-nginx/index.html b/blog/2021/08/10/apisix-nginx/index.html
deleted file mode 100644
index 0c6cfd4..0000000
--- a/blog/2021/08/10/apisix-nginx/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 架构分析:如何动态管理 Nginx 集群? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<img src="https://static.apiseven.com/202108/1631170345853-f020a64d-3e97-49c0-8395-c9e4e9cf4233.jpeg" alt="基于 etcd 同步 nginx 配置"></li></ul><p>因此,不同于 Orange 和 Kong,Apache APISIX 采用了 etcd 作为中心化的配置组件。你可以在生产环境的 Apache APISIX 中通过 etcdctl 看到如下类似配置:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span cl [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 参见 ngx_proc.c 文件</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><sp [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">lua_pushcfunction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">L</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ngx_http_lua_ngx_timer_at</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="c [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">lua_setfield</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">L</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">2</span><span class="tok [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local ok, err = util.write_file(env.apisix_home .. &quot;/conf/nginx.conf&quot;,</span></span><span class="token-line" style="color:#393A34"><span class="token plain">                                    ngxconf)</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>当然,Apache APISIX 允许用户修改 nginx.conf 模板中的部分数据 [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local_conf_path = profile:yaml_path(&quot;config&quot;)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local user_conf_yaml, err = util.read_file(local_conf_path)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    ok, err = merge_conf(default_conf, user_conf)</span></span><span class="token-line" style="color:#393A34" [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function sync_data(self)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local dir_res, err = waitdir(self.etcd_cli, self.key, self.prev_index + 1, self.timeout)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inli [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function waitdir(etcd_cli, key, modified_index, timeout)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local res_func, func_err, http_cli = etcd_cli:watchdir(key, opts)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    if http_cli then</span></span><span class="token-line" style="color:#393A34"><span class="token  [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function watch(self, key, attr)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    callback_fun, err, http_cli = request_chunk(self, &#x27;POST&#x27;, &#x27;/watch&#x27;,</span></span><span class="token-line" style="color:#393A34"><span class="token plain">                                                opts, attr.timeout or self.timeout)</span></span><span  [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function request_chunk(self, method, path, opts, timeout)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    http_cli, err = utils.http.new()</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    -- 发起 TCP 连接</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    endpoint, err = http_requ [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function http_request_chunk(self, http_cli)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local endpoint, err = choose_endpoint(self)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    ok, err = http_cli:connect({</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        scheme = [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    return endpoint, err</span></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>可见,Apache APISIX 在每个 worker 进程中,<strong>通过 <code>ngx.timer.at</code> 和 lua-resty-etcd 库反复请求 etcd,以此保证每个 Worker 进程中都含有最新的配置。</strong></p><h2><a a [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    location/apisix/admin </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">        content_by_lua_block </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class= [...]
-</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>这样,Nginx 接收到的 /apisix/admin 请求将被 <code>http_admin</code> 函数处理:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly lua"><pre tabindex="0" class="prism-code language-lua codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393 [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local seg_res, seg_id = uri_segs[4], uri_segs[5]</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local seg_sub_path = core.table.concat(uri_segs, &quot;/&quot;, 6)</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local resource = resources[seg_res]</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local code, data = resource[method](seg_id, req_body, seg_sub_path,</span></span><span class="token-line" style="color:#393A34"><span class="token plain">                                        uri_args)</span></span><span class="token-line" style="color:#393A34"><span class [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">-- /apisix/core/etcd.lua</span></span><span class="token-line" style="color:#393A34"><span class="token plain">local function set(key, value, ttl)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    local res, err = etcd_cli:set(prefix .. key, value, {prev_kv = true, lease = data.body.ID})</span></span><span class="token-line" style="color:#393A34"><span class="tok [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/11/interview-TuZhengsong/index.html b/blog/2021/08/11/interview-TuZhengsong/index.html
deleted file mode 100644
index fb4deb4..0000000
--- a/blog/2021/08/11/interview-TuZhengsong/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">从新手村出来,我在 Apache APISIX 社区发出了第一个 PR | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability/index.html b/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability/index.html
index 5f4f79a..640e43f 100644
--- a/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability/index.html
+++ b/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Chaos Mesh Helps Apache APISIX Improve System Stability | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:im [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects-en/index.html b/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects-en/index.html
index cfe07e2..29d71b8 100644
--- a/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects-en/index.html
+++ b/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects-en/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Contributors — The Golden Metric of OpenSource Projects | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:im [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 <a href="https://github.com/api7/contributor-graph" target="_blank" rel="noopener noreferrer">https://github.com/api7/contributor-graph</a></p></blockquote><p>Behind these fast-growing numbers, open source maintainers did a lot of work on propaganda, article, media, Meetups, etc., to attract more developers for their projects, It’s a lot to take in.</p><p>So for developers, how can they find out which one is the best fit for their company among the hundreds of projects on GitHub?</p><p>V [...]
-As maintainers and developers of open source projects, we also need such golden metrics to guide us. Therefore, we propose two dimensions, “Contributor Growth” and “Active Contributors”, and open source the statistics and analysis process: <a href="https://github.com/api7/contributor-graph" target="_blank" rel="noopener noreferrer">https://github.com/api7/contributor-graph</a>, you can also search directly through <a href="https://www.apiseven.com/zh/contributor-graph" target="_blank" re [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+As maintainers and developers of open source projects, we also need such golden metrics to guide us. Therefore, we propose two dimensions, “Contributor Growth” and “Active Contributors”, and open source the statistics and analysis process: <a href="https://github.com/api7/contributor-graph" target="_blank" rel="noopener noreferrer">https://github.com/api7/contributor-graph</a>, you can also search directly through <a href="https://www.apiseven.com/zh/contributor-graph" target="_blank" re [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects/index.html b/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects/index.html
deleted file mode 100644
index e13b2dd..0000000
--- a/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">贡献者,是衡量开源项目的金指标 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org/ [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<a href="https://github.com/api7/contributor-graph" target="_blank" rel="noopener noreferrer">https://github.com/api7/contributor-graph</a></p></blockquote><p>在这些快速增长的数字背后,隐藏的是开源项目为了赢得开发者而做出的各种宣传:硬核技术文章、社交活动、新媒体、周边礼物等,可以说是乱花渐欲迷人眼。那么对于开发者来说,如何能够在百花齐放的项目中,找出最适合自己公司的那一个呢?</p><p>这就会涉及到开源项目的各种指标:</p><ul><li><p>Star 数:这是最直接的指标,它代表的是这个项目吸引了多少开发者的关注,可以体现这个项目的 marketing 水平。如果这个项目有商业公司资金的支持、强力的 PR 团队,或者是水军刷 Star,那么这个指标就很容易失真;</p></li><li><p>Issue 和 PR 数:GitHub 提供了 Insights 功能,如下图所示:</p></li></ul>< [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html b/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html
index 1e5b414..79895ca 100644
--- a/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html
+++ b/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html
@@ -16,18 +16,18 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Using the Apache APISIX OpenID Connect Plugin for Okta Centralized Authentication | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helm [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 <img alt="Create App Integration" src="/assets/images/2021-08-16-4-56246ab773e8514b6d7ff6e88a1ba575.png"></li><li>Select &quot;OIDC-OpenID Connect&quot; for the Sign-in method, and select &quot;Web Application&quot; for the  Application type.
 <img alt="Create a new App Integration" src="/assets/images/2021-08-16-5-27949e296923f482ca03e52147040e5b.png"></li><li>Set the redirect URL for login and logout. The &quot;Sign-in redirect URIs&quot; are links a user can go to after a successful login, and the &quot;Sign-out redirect URIs&quot; are links a user goes to after a successful logout. In this example, we set both sign-in and sign-out redirect URIs to <code>http://127.0.0.1:9080/</code>.
 <img alt="Set the redirect URL for login and logout" src="/assets/images/2021-08-16-6-f282419b7f52ab87487580f15b7789f3.png"></li><li>After finishing the settings, click &quot;Save&quot; to save the changes.
 <img alt="save the changes" src="/assets/images/2021-08-16-7-b7ceb94a0cbdac698adcdd78dd290bbe.png"></li><li>Visit the General page of the application to obtain the following configuration, which is required to configure Apache APISIX OpenID Connect.</li></ol><ul><li>Client ID: OAuth client ID, the application ID, which corresponds to client_id and {YOUR_CLIENT_ID} below.</li><li>Client secret: OAuth client secret, the application key, which corresponds to client_secret and {YOUR_CLIENT_S [...]
-<img alt="visit Okta login page" src="/assets/images/2021-08-16-9-9752a521c7717adfb0fe94f20bb28c8d.png"></p></li><li><p>Enter the username and password for the user&#x27;s Okta account and click &quot;Sign In&quot; to log in to your Okta account.</p></li><li><p>After successful login, you can access the get page in &quot;httpbin.org&quot;. The &quot;httpbin.org/get&quot; page will return the requested data with X-Access-Token,X-Id-Token, and X-Userinfo as follows.</p><div class="codeBloc [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<img alt="visit Okta login page" src="/assets/images/2021-08-16-9-9752a521c7717adfb0fe94f20bb28c8d.png"></p></li><li><p>Enter the username and password for the user&#x27;s Okta account and click &quot;Sign In&quot; to log in to your Okta account.</p></li><li><p>After successful login, you can access the get page in &quot;httpbin.org&quot;. The &quot;httpbin.org/get&quot; page will return the requested data with X-Access-Token,X-Id-Token, and X-Userinfo as follows.</p><div class="codeBloc [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/08/17/interview-airwallex/index.html b/blog/2021/08/17/interview-airwallex/index.html
deleted file mode 100644
index 0b681f6..0000000
--- a/blog/2021/08/17/interview-airwallex/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:ima [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX/index.html b/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX/index.html
deleted file mode 100644
index 6fd783a..0000000
--- a/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">在 Apache APISIX 中使用 Casbin 进行授权 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<a href="https://github.com/apache/apisix/blob/d9b928321fcdd12eef024df8c7c410424c1e0c8b/docs/en/latest/plugins/authz-casbin.md" target="_blank" rel="noopener noreferrer">authz-casbin</a> 是一个基于 lua-casbin 的 Apache APISIX 插件,支持基于各种访问模型的强大授权。Casbin 是一个强大的、高效的开源访问控制框架,支持 ACL、RBAC、ABAC 等访问控制模型,lua-casbin 是 Casbin 访问控制框架的 Lua 版本实现。
-authz-casbin 插件可以把路由匹配和请求授权这两个功能很好地进行解耦,你可以将各种授权访问模型加载到 Apache APISIX 中,借助 lua-casbin 实现高效复杂的授权模式。</p><p><strong>注意</strong>:如果你想要实现身份验证(authentication),你需要使用其他插件或者自己来配置完成验证用户身份,比如 <a href="https://github.com/apache/apisix/blob/master/docs/zh/latest/plugins/jwt-auth.md" target="_blank" rel="noopener noreferrer">jwt-auth</a> 插件。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="authz-casbin-使用指南"></a>authz-casbin 使用指南<a class="hash- [...]
-假如,我们想要创建一个模型来访问三个资源:/,/res1,/res2,我们想要一个类似于这样的模型:</p><p><img alt="authz-casbin example" src="/assets/images/2021-08-18-1-5ecf309fec322291ce40b4fae7424acc.png"></p><p>在这个模型中,所有的用户,例如 Jack,可以访问主页面(/)。而像 Alice 和 Bob 具有管理员权限的用户则可以访问所有的页面和资源(/res1,/res2,/)。这样,我们就需要来限制没有管理员权限的用户只能使用 GET 请求方法访问特定的资源。所需要的模型如下:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;bac [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">policy_definition</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">p </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> sub, obj, act</s [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">role_definition</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">g </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> _, _</span></span> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">policy_effect</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> some</span><span cla [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">matchers</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">m </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token [...]
-同样,你可以将模型和策略直接放到里面:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://127.0.0.1:9080/apisix/admin/routes/1 -H </span><span class="token string" style="colo [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [policy_definition]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            p = sub, obj, act</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c">
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [role_definition]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            g = _, _</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c">
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [policy_effect]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            e = some(where (p.eft == allow))</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c">
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [matchers]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) &amp;&amp; keyMatch(r.obj, p.obj) &amp;&amp; keyMatch(r.act, p.act)&quot;,</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block; [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            &quot;policy&quot;: &quot;p, *, /, GET</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            p, admin, *, *</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            g, alice, admin&quot;,</span></span><span class="token-line" style="color: [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            &quot;username&quot;: &quot;user&quot;</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        }</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    },</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="co [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/19/go-makes-Apache-APISIX-better/index.html b/blog/2021/08/19/go-makes-Apache-APISIX-better/index.html
deleted file mode 100644
index 6db0035..0000000
--- a/blog/2021/08/19/go-makes-Apache-APISIX-better/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Go 让 Apache APISIX 如虎添翼 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apa [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  w</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Header</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Add</span><span class="token pun [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">hello</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>可以看到接口返回 hello 而且没有访问到任何上游。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="设置-apache-apisix-(运行)"></a>设置 Apache APISIX (运行)<a class="hash-link" href="#设置-apache-apisix-(运行)" title="Direct link  [...]
-点击访问 <a href="https://github.com/apache/apisix-go-plugin-runner" target="_blank" rel="noopener noreferrer">apisix-go-plugin-runner</a>.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="相关阅读"></a>相关阅读<a class="hash-link" href="#相关阅读" title="Direct link to heading">#</a></h2><p><a href="https://apisix.apache.org/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins" target="_blank" rel="noopener noreferrer">如何用 Java 编写 Apache APIS [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/19/weekly-report/index.html b/blog/2021/08/19/weekly-report/index.html
deleted file mode 100644
index 802b80e..0000000
--- a/blog/2021/08/19/weekly-report/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 社区周报 | 2021年8月9日~8月15日 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<strong>问题描述</strong>:Admin API 中关于创建 Route 入参 (vars) 的描述有错误.
-<img alt="issue" src="/assets/images/issue_photo-09addbbcbea6116f36fdad097e6c6265.png">
-<strong>解决方案</strong>:在 json 中,方括号表示数组,而花括号表示对象。这里明显是想表述是数组嵌套数组的方式,但是用两个花括号在 json 里面是错误的书写方式。所以这里应该是方括号。</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly json"><pre tabindex="0" class="prism-code language-json codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></s [...]
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4559" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4559</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/dickens7" target="_blank" rel="noopener noreferrer">dickens7</a></p></li><li><p><strong>流量控制类插件增加降级处理</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4774" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4774</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/okaybase" target="_blank" rel="noopener noreferrer">okaybase</a></p></li><li><p><strong>log-rotate 插件支持压缩已切割的日志文件</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4795" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4795</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/okaybase" target="_blank" rel="noopener noreferrer">okaybase</a></p></li><li><p><strong>real-ip 插件实现第一个版本</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4813" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4813</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/spacewander" target="_blank" rel="noopener noreferrer">spacewander</a></p></li><li><p><strong>consumer-restriction 支持根据 Route 对象做限制</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4759" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4759</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/jagerzhang" target="_blank" rel="noopener noreferrer">jagerzhang</a></p></li></ul><p>Apache APISIX 的<a href="https://apisix.apache.org/" target="_blank" rel="noopener noreferrer">项目官网</a>和 Github 上的 <a href="https://github.com/apache/apisix/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" target="_blank" rel="noopener noreferrer">issue</a> 上已经积累了比较丰富的文档教程和使用经验,如果您遇到问题可以翻阅文档,用关键词在 issue 中搜索,也可以参与 issue 上的讨论,提出自己的想法和实践经验。</p><h2><a aria-hi [...]
-本次 Meetup 由 API7.AI 发起,并邀请爱奇艺、空中云汇等合作伙伴共同为大家呈现。Apache APISIX PMC 成员、贡献者、社区技术专家汇聚一堂,共同探讨 Apache APISIX 社区发展、行业实践等话题。</p></li><li><p><a href="https://mp.weixin.qq.com/s/pyfBAHONGjkKJhwsjyhdUA" target="_blank" rel="noopener noreferrer">从新手村出来,我在 Apache APISIX 社区发出了第一个 PR</a><br>
-屠正松同学的采访文章,下回我们会采访哪位社区的小伙伴呢?快来 Apache APISIX 社区瞧一瞧吧!没准,下一位 committer 就是你!</p></li><li><p><a href="https://mp.weixin.qq.com/s/oARDFf_48X99MXBwoXcSHw" target="_blank" rel="noopener noreferrer">舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践</a><br>
-介绍了 Apache APISIX 在趣链科技 BaaS 平台中的落地实践情况,以及趣链科技在众多网关应用中选择 Apache APISIX 的原因。</p></li><li><p><a href="https://mp.weixin.qq.com/s/G1lQUdZ05_HlZLNcY9tflw" target="_blank" rel="noopener noreferrer">贡献者,是衡量开源项目的金指标</a><br>
-秉承 The Apache Way,我们相信,只有活跃的社区才能保证开源项目的未来。同时,我们也希望可以通过更加直观的图表来展示社区活跃度。</p></li></ul></div><footer class="row docusaurus-mt-lg blogPostDetailsFull_3kfx"><div class="col"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/events">Events</a></li></ul></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><div class="pagination-nav__item"><a class="pagi [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/21/shanghai-meetup/index.html b/blog/2021/08/21/shanghai-meetup/index.html
deleted file mode 100644
index deceaf5..0000000
--- a/blog/2021/08/21/shanghai-meetup/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">8 月 21 日 Apache APISIX Meetup 上海站,欢迎报名参加! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/23/ApacheCon-Asia-2021/index.html b/blog/2021/08/23/ApacheCon-Asia-2021/index.html
deleted file mode 100644
index 0521cd3..0000000
--- a/blog/2021/08/23/ApacheCon-Asia-2021/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">ApacheCon Asia 2021 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache. [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/23/weekly-report/index.html b/blog/2021/08/23/weekly-report/index.html
deleted file mode 100644
index eaa8c40..0000000
--- a/blog/2021/08/23/weekly-report/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 社区周报 | 2021 8.16-8.22 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4817" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4817</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/RocFang" target="_blank" rel="noopener noreferrer">RocFang</a>  </p></li><li><p><strong>ext-plugin 插件支持 ExtraInfo</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4835" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4835</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/spacewander" target="_blank" rel="noopener noreferrer">spacewander</a>  </p></li><li><p><strong>real-ip 插件为 <code>X-Forwarded-For</code> 添加特殊处理</strong><br>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4852" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4852</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/spacewander" target="_blank" rel="noopener noreferrer">spacewander</a>  </p></li><li><p><strong>uri-blocker 插件支持自定义失败响应</strong>
-<strong>相关 PR</strong>:<a href="https://github.com/apache/apisix/pull/4849" target="_blank" rel="noopener noreferrer">https://github.com/apache/apisix/pull/4849</a><br>
-<strong>贡献者</strong>:<a href="https://github.com/okaybase" target="_blank" rel="noopener noreferrer">okaybase</a>  </p></li></ul><p>Apache APISIX 的<a href="https://apisix.apache.org/" target="_blank" rel="noopener noreferrer">项目官网</a>和 Github 上的 <a href="https://github.com/apache/apisix/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" target="_blank" rel="noopener noreferrer">issue</a> 上已经积累了比较丰富的文档教程和使用经验,如果您遇到问题可以翻阅文档,用关键词在 issue 中搜索,也可以参与 issue 上的讨论,提出自己的想法和实践经验。</p><h2><a aria-hidd [...]
-这篇文章将详细讲解如何用 Go 来开发 Apache APISIX 插件。通过拥抱 Go 的生态圈,为 Apache APISIX 开创一片新天地,希望 Go 能让 Apache APISIX 如虎添翼!</p></li><li><p><a href="https://mp.weixin.qq.com/s?__biz=MzI1MDU3NjQ5OA==&amp;mid=2247486406&amp;idx=1&amp;sn=5d04353f3d8128f17fca138572667ddb&amp;chksm=e98160dbdef6e9cd19ddeed4267554a15bcd1a10decfa2c16f2989575bd9a1c9c95349b0c0cc&amp;token=1586118041&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨</a><br>
-Airwallex 空中云汇技术平台负责人李杨的专访,一起来听听空中云汇与 Apache APISIX 之间的故事。</p></li><li><p><a href="https://mp.weixin.qq.com/s?__biz=MzI1MDU3NjQ5OA==&amp;mid=2247486382&amp;idx=1&amp;sn=f041eb8c38dd528450e5bf4280b60b0f&amp;chksm=e98160b3def6e9a5331f9485d8a478f9546475f949a31f8142c4188d9c104d39eec9a281bbf2&amp;token=1586118041&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">Apache APISIX 社区周报 | 2021 8.9-8.15</a><br>
-“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。</p></li></ul></div><footer class="row docusaurus-mt-lg blogPostDetailsFull_3kfx"><div class="col"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/events">Events</a></li></ul></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><div class="paginatio [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/24/shanghai-meetup-recap/index.html b/blog/2021/08/24/shanghai-meetup-recap/index.html
deleted file mode 100644
index c15facd..0000000
--- a/blog/2021/08/24/shanghai-meetup-recap/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX Meetup 上海站全程回顾 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX/index.html b/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX/index.html
index 6b677ae..8e94ef7 100644
--- a/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX/index.html
+++ b/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX/index.html
@@ -16,12 +16,12 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Authorization with Casbin in Apache APISIX | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content= [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">policy_definition</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">p </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> sub, obj, act</s [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">role_definition</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">g </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> _, _</span></span> [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">policy_effect</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> some</span><span cla [...]
@@ -31,8 +31,8 @@
 </span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [policy_effect]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            e = some(where (p.eft == allow))</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c">
 </span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            [matchers]</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            m = (g(r.sub, p.sub) || keyMatch(r.sub, p.sub)) &amp;&amp; keyMatch(r.obj, p.obj) &amp;&amp; keyMatch(r.act, p.act)&quot;,</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block; [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            &quot;policy&quot;: &quot;p, *, /, GET</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            p, admin, *, *</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            g, alice, admin&quot;,</span></span><span class="token-line" style="color: [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            &quot;username&quot;: &quot;user&quot;</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        }</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    },</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="co [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">            &quot;username&quot;: &quot;user&quot;</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        }</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    },</span></span><span class="token-line" style="color:#393A34"><span class="token string" style="co [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html b/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html
deleted file mode 100644
index df7c394..0000000
--- a/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 Apache APISIX 的 OpenID Connect 插件进行集中身份认证 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" conten [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<img alt="创建一个 Okta 应用" src="/assets/images/2021-08-16-4-56246ab773e8514b6d7ff6e88a1ba575.png"><img alt="选择 OIDC 登录模式以及 Web Application 应用类型" src="/assets/images/2021-08-16-5-27949e296923f482ca03e52147040e5b.png"></li><li>设置登录和登出的跳转 URL。
-其中 “Sign-in redirect URIs” 为登录成功允许跳转的链接地址,“Sign-out redirect URIs” 表示登出之后跳转的链接地址。在这个示例中,我们将登录成功跳转和登出之后跳转的链接地址都设置为 <code>http://127.0.0.1:9080/</code>。
-<img alt="设置登录和登出的跳转 URL" src="/assets/images/2021-08-16-6-f282419b7f52ab87487580f15b7789f3.png"></li><li>完成设置以后,单击“Save”保存修改。
-<img alt="保存修改" src="/assets/images/2021-08-16-7-b7ceb94a0cbdac698adcdd78dd290bbe.png"></li><li>访问应用的 General 页面,获取以下配置,配置 Apache APISIX OpenID Connect 时需要提供这些信息:</li></ol><ul><li>Client ID:OAuth client ID,即应用的 ID,与下文的 <code>client_id</code>  和 <code>{YOUR_CLIENT_ID}</code> 对应。</li><li>Client secret:OAuth client secret,即应用密钥,与下文的 <code>client_secret</code>  和 <code>{YOUR_CLIENT_SECRET}</code> 对应。</li><li>Okta domain:应用使用的域名,与下文的 discovery  中的 <code>{YOUR_ISSUER}</code> 对应。</li></ul><p><i [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/25/Why-Apache-APISIX-chose-Nginx-and-Lua/index.html b/blog/2021/08/25/Why-Apache-APISIX-chose-Nginx-and-Lua/index.html
deleted file mode 100644
index 0728e59..0000000
--- a/blog/2021/08/25/Why-Apache-APISIX-chose-Nginx-and-Lua/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="ht [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-由于现行的主流 API 网关,如果不是基于 OpenResty 实现,就是使用 Go 编写,所以时不时会看到各种 Go 和 Lua 谁的性能更好的比较。  </p><p><strong>就我个人观点看,脱离场景比较语言的性能,是没有意义的。</strong></p><p>首先明确一点,Apache APISIX 是基于 Nginx + Lua 的技术栈,只是外层代码用的是 Lua。所以如果要论证哪种网关性能更好,正确的比较对象是 C + LuaJIT 跟 Go 的比较。网关的性能的大头,在于代理 HTTP 请求和响应,这一块的工作主要是 Nginx 在做。</p><p><strong>所以倘若要比试比试性能,不妨比较 Nginx 和 Go 标准库的 HTTP 实现。</strong></p><p>众所周知,Nginx 是一个 bytes matter 的高性能服务器实现,对内存使用非常抠门。举两个例子:</p><ol><li>Nginx 里面的 request header 在大多数时候都只是指向原始的 HTTP 请求数据的一个指针,只有在修改的时候才会创�
 �副本。</l [...]
-而 Go 的库,当然是大部分用 Go 实现的。虽然有 CGO 这种东西,但是受限于 Go 的协程调度和工具链的限制,它在 Go 的生态圈里面只能处于从属的地位。</p><p>关于 LuaJIT 和 Go 对于 C 的亲和力的比较,推荐 Hacker News 上的这篇文章:《Comparing the C FFI overhead in various programming languages》(链接 <a href="https://news.ycombinator.com/item?id=17161168" target="_blank" rel="noopener noreferrer">https://news.ycombinator.com/item?id=17161168</a> )</p><p>于是我们比较 Lua 的某些功能,其实还是会回到 C 和 Go 的比较中。</p><p><strong>其二,LuaJIT 的 JIT 优化无出其右。</strong></p><p>讨论动态语言的性能,可以把动态语言分成两类,带 JIT 和不带 JIT 的。JIT [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">for i = 1, n do</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    io.write(text[i], &quot; &quot;, map[text[i]], &quot;\n&quot;)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><di [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/27/release-apache-apisix-2.9-en/index.html b/blog/2021/08/27/release-apache-apisix-2.9-en/index.html
index 6a06ba8..f2b57f4 100644
--- a/blog/2021/08/27/release-apache-apisix-2.9-en/index.html
+++ b/blog/2021/08/27/release-apache-apisix-2.9-en/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.9 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/08/27/release-apache-apisix-2.9/index.html b/blog/2021/08/27/release-apache-apisix-2.9/index.html
deleted file mode 100644
index a26448b..0000000
--- a/blog/2021/08/27/release-apache-apisix-2.9/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 2.9 正式发布,带来更多新功能! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/30/Ingress-Meeting/index.html b/blog/2021/08/30/Ingress-Meeting/index.html
deleted file mode 100644
index 9d9051b..0000000
--- a/blog/2021/08/30/Ingress-Meeting/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">社区会议| 周三下午 2 点,Apache APISIX Ingress 社区会议与你不见不散 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" con [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-以 Apache Way 的方式参与社区,订阅方式见官网<a href="https://apisix.apache.org/docs/general/subscribe-guide" target="_blank" rel="noopener noreferrer">订阅指南</a>。邮件列表是 Apache 社区最常用的沟通方式,社区会积极回复邮件列表中的问题。</p></li><li><p>在 Apache APISIX Github discussion 发起讨论
-欢迎大家在 GitHub discussion 讨论,<a href="https://github.com/apache/apisix/discussions" target="_blank" rel="noopener noreferrer">discussion</a> 区非常活跃哦。我们也会不定期的将一些常见问题在 discussion 中进行汇总和答复,方便大家查找。</p></li></ol></div><footer class="row docusaurus-mt-lg blogPostDetailsFull_3kfx"><div class="col"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/events">Events</a></li></ul></div></footer></article><nav class=" [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/08/30/weekly-report/index.html b/blog/2021/08/30/weekly-report/index.html
deleted file mode 100644
index 3d5fb26..0000000
--- a/blog/2021/08/30/weekly-report/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 社区周报 | 2021 8.23-8.29 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git "a/blog/2021/08/31/Apache APISIX \303\227 KubeSphere-a-better-gateway-and-K8S-Ingress-Controller/index.html" "b/blog/2021/08/31/Apache APISIX \303\227 KubeSphere-a-better-gateway-and-K8S-Ingress-Controller/index.html"
deleted file mode 100644
index ac1115a..0000000
--- "a/blog/2021/08/31/Apache APISIX \303\227 KubeSphere-a-better-gateway-and-K8S-Ingress-Controller/index.html"	
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX × KubeSphere:提供更好用的网关及 K8S Ingress Controller | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitte [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME              TYPE        CLUSTER-IP   EXTERNAL-IP   PORT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">S</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">   AGE</span></span><span class="token-line" style="color:#393A34"><span class="token plain">service/httpbin   ClusterIP   </span><span class="token numb [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development/index.html b/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development/index.html
deleted file mode 100644
index 2dedf5b..0000000
--- a/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Python 助你快速上手 Apache APISIX 插件开发 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://a [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-和 <a href="https://github.com/apache/apisix-go-plugin-runner" target="_blank" rel="noopener noreferrer">Go</a> 语言的 Runner,今天 Python Runner
-也来了,社区中的小伙伴们在开发 Apache APISIX 的插件时又多了一种新选择。</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="简介"></a>简介<a class="hash-link" href="#简介" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="apache-apisix"></a>Apache APISIX<a class="hash-link" href="#apache-apisix" title="Direct link to heading">#</a></h3><p><code>Apache APISIX</c [...]
-的加持只需要关注业务实现即可,省去了大量花费在通用能力上的开发与维护上的时间并且也降低了整体业务架构的复杂度。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="python"></a>Python<a class="hash-link" href="#python" title="Direct link to heading">#</a></h3><p><code>Python</code> 语言作为一个解释型的高级编程语言,它 <code>语法简洁易上手</code>、<code>代码可读性好</code> ,在 <code>跨平台</code> 、<code>可移植性</code> 、<code>开发效率</code>
-上都有很好的表现,同时作为一个高级编程语言它的封装抽象程度比较高屏蔽了很多底层细节(例如:<code>GC</code>
-)让我们在开发的过程中可以更专注应用逻辑的开发。<code>Python</code> 作为一个有30年历史的老牌开发语言,它的生态以及各种模块已经非常完善,我们大部分的开发和应用场景都可以从社区中找到很成熟的模块或解决方案。<code>Python</code>
-其他的优点就不再一一赘述。<code>Python</code> 的缺点也比较明显:<code>Python</code> 作为一门解释性语言,相较于 <code>C++</code> 和 <code>Go</code> 这样的编译型语言,在性能上的差距还是比较大的。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="apache-apisix-python-runner"></a>Apache APISIX Python Runner<a class="hash-link" href="#apache-apisix-python-runner" title="Direct link to heading">#</a></h3><p><a href="https://github.com/apache/apisix-python-plugin-runner" target="_blank" rel="noop [...]
-和 <code>Python</code>
-之间的一道桥梁,通过 <code>Python Runner</code> 可以把 <code>Python</code> 直接应用到 <code>APISIX</code> 的插件开发中,最重要的还是希望让更多对 <code>Apache APISIX</code> 和 <code>API 网关</code> 感兴趣的 <code>Python开发者</code>
-通过这个项目更多的了解使用 <code>Apache APISIX</code>,以下为 <code>Apache APISIX</code> 多语言支持的架构图。</p><p><img alt="Apache APISIX work flow" src="/assets/images/2021-09-06-1-309b019beba33f8b42cef1731324c711.png"></p><p>上图左边是 <code>Apache APISIX</code> 的工作流程,右边的 <code>Plugin Runner</code> 是各语言的插件运行器,本文介绍的 <code>apisix-python-plugin-runner</code> 就是支持 <code>Python</code>
-语言的 <code>Plugin Runner</code>。</p><p>当你在 <code>Apache APISIX</code> 中配置一个 <code>Plugin Runner</code> 时,<code>Apache APISIX</code> 会启动一个子进程运行 <code>Plugin Runner</code>,该子进程与 <code>Apache APISIX</code>
-进程属于同一个用户,当我们重启或重新加载 <code>Apache APISIX</code> 时,<code>Plugin Runner</code> 也将被重启。</p><p>如果你为一个给定的路由配置了 <code>ext-plugin-*</code> 插件,请求命中该路由时将触发 <code>Apache APISIX</code> 通过 <code>Unix Socket</code> 向 <code>Plugin Runner</code> 发起 <code>RPC</code> 调用。调用分为两个阶段:</p><ul><li><a href="https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/ext-plugin-pre-req.md" target="_blank" rel="noopener noreferrer">ext-plugin-pre-req</a>
-:在执行 <code>Apache APISIX</code> 内置插件(Lua 语言插件)之前</li><li><a href="https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/ext-plugin-post-req.md" target="_blank" rel="noopener noreferrer">ext-plugin-post-req</a>
-:在执行 <code>Apache APISIX</code> 内置插件(Lua 语言插件)之后</li></ul><p>大家可以根据需要选择并配置 <code>Plugin Runner</code> 的执行时机。</p><p><code>Plugin Runner</code> 会处理 <code>RPC</code> 调用,在其内部创建一个模拟请求,然后运行多语言编写的插件,并将结果返回给 Apache APISIX。</p><p>多语言插件的执行顺序是在 <code>ext-plugin-*</code> 插件配置项中定义的,像其他插件一样,它们可以被启用并在运行中重新定义。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="部署测试"></a>部署测试<a class="hash-link" href="#部署测试" title="Direct link to heading">#</a></h2> [...]
-的安装部署本文不在过多赘述,详情请参考 <a href="https://github.com/apache/apisix/blob/master/docs/en/latest/how-to-build.md" target="_blank" rel="noopener noreferrer">Apache APISIX 官方文档:如何构建 Apache APISIX</a>
-进行部署。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="下载安装-python-runner"></a>下载安装 Python Runner<a class="hash-link" href="#下载安装-python-runner" title="Direct link to heading">#</a></h3><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly bash"><pre tabindex="0" class="prism-code language-bash codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span cla [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">logging:</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  level: debug </span><span class="token comment" style="color:#999988;font-style:italic"># error warn info debug</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Hello, Python Runner of APISIX</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="插件开发"></a>插件开发<a class="hash-link" href="#插件开发" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1 [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Stop</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Base</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span></sp [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">self</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> request</span><span class="token punctuation" st [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 设置响应头信息</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">        headers </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> request</span><span class="token punctuation" style="color:#393A34">.</span><span cl [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 设置响应体信息</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">        response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">body </span><span class="token operator" style="color:#393A34">=</span><span class [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 设置响应状态码</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">        response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">status_code </span><span class="token operator" style="color:#393A34">=</span><spa [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 通过调用 `self.stop()` 中断请求流程,此时将立即响应请求给客户端</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># 如果未显示调用 `self.stop()` 或 显示调用 `self.rewrite()`将继续将请求</span><span class="token [...]
-的开发,让我们一起共建 <code>Apache APISIX</code> 与各语言的桥梁。</p><ul><li><a href="https://github.com/apache/apisix-python-plugin-runner" target="_blank" rel="noopener noreferrer">apisix-python-plugin-runner</a></li><li><a href="https://github.com/apache/apisix-go-plugin-runner" target="_blank" rel="noopener noreferrer">apisix-go-plugin-runner</a></li><li><a href="https://github.com/apache/apisix-java-plugin-runner" target="_blank" rel="noopener noreferrer">apisix-java-plugin-runner</a></li></ul><h2><a [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/07/how-to-use-apisix-auth/index.html b/blog/2021/09/07/how-to-use-apisix-auth/index.html
deleted file mode 100644
index 7ee8788..0000000
--- a/blog/2021/09/07/how-to-use-apisix-auth/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">使用 Apache APISIX 进行集中式身份认证及进阶玩法 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://ap [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/07/iQIYI-usercase/index.html b/blog/2021/09/07/iQIYI-usercase/index.html
deleted file mode 100644
index 2ffd7e2..0000000
--- a/blog/2021/09/07/iQIYI-usercase/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https: [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/09/how-to-contribute-to-an-OpenSource-without-coding/index.html b/blog/2021/09/09/how-to-contribute-to-an-OpenSource-without-coding/index.html
deleted file mode 100644
index 556fbc1..0000000
--- a/blog/2021/09/09/how-to-contribute-to-an-OpenSource-without-coding/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">不写代码,如何为开源项目做贡献? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/13/china-mobile-cloud-usercase/index.html b/blog/2021/09/13/china-mobile-cloud-usercase/index.html
deleted file mode 100644
index 08b021b..0000000
--- a/blog/2021/09/13/china-mobile-cloud-usercase/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="htt [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-我们通过接入 Apache APISIX 实现了内外网域名的多域名证书配置,并提供了加密访问功能,同时实现了 SSL 证书动态加载的功能实现。对于 24 小时不间断的业务,能够动态更新 SSL 证书是非常重要的。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="改进二:请求熔断保护"></a>改进二:请求熔断保护<a class="hash-link" href="#改进二:请求熔断保护" title="Direct link to heading">#</a></h3><p>在这里首先给大家简单描述一下目前接入 Apache APISIX 后的对象存储 EOS 节点管理。整个对象存储分为数据平面和控制平面。数据平面主要承载整个业务的 I/O 流。业务数据是从 Apache APISIX 的 7 层流量治理模块作为入口,通过 APISIX 后端上游的 Accesser,实现业务接口处理的主要模块。</p>< [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/14/youzan/index.html b/blog/2021/09/14/youzan/index.html
deleted file mode 100644
index 95f6fec..0000000
--- a/blog/2021/09/14/youzan/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="ht [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/15/weekly-report/index.html b/blog/2021/09/15/weekly-report/index.html
deleted file mode 100644
index 94fd501..0000000
--- a/blog/2021/09/15/weekly-report/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">社区周报|新晋 committer 两位,功能亮点更新进行中 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://api [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">casbin 1.26.0-1 depends on lrexlib-pcre &gt;= 2.9.1 (not installed)</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Installing https://luarocks.org/lrexlib-pcre-2.9.1-1.src.rock</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
-</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Error: Failed installing dependency: https://luarocks.org/casbin-1.26.0-1.rockspec - Failed installing dependency: https://luarocks.org/lrexlib-pcre-2.9.1-1.src.rock - Could not find header file for PCRE</span></span><span class="token-line" style="color:#393A34"><span class="token plain">  No file pcre.h in /usr/local/include</span></span><span class="token-line" style="color:#393A34"><span class="tok [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/16/tencent-cloud/index.html b/blog/2021/09/16/tencent-cloud/index.html
deleted file mode 100644
index 429a209..0000000
--- a/blog/2021/09/16/tencent-cloud/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 在腾讯云智能钛平台中的落地实践 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apis [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/18/xiaodian-usercase/index.html b/blog/2021/09/18/xiaodian-usercase/index.html
deleted file mode 100644
index 484e6ab..0000000
--- a/blog/2021/09/18/xiaodian-usercase/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 助力便利充电创领者小电,实现云原生方案 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https:// [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-作者孙冉,运维专家。目前就职于小电平台架构部,主要负责 K8s 集群和 API 网关的相关部署。</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="业务背景"></a>业务背景<a class="hash-link" href="#业务背景" title="Direct link to heading">#</a></h2><p>小电作为国内共享充电宝服务平台,目前还处于初创阶段。从运维体系、测试环境等方面来讲,当下产品的业务主要面临了以下几个问题:</p><ul><li>VM 传统模式部署,利用率低且不易扩展</li><li>开发测试资源抢占</li><li>多套独立的测试环境(k8s),每次部署维护步骤重复效率低</li><li>使用 Nginx 配置管理,运维成本极高</li></ul><p>在 2020 年初,我们决定启动容器化项目,打算寻找一个现有方案来进行上述问题的解决。 [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/24/youpaicloud-usercase/index.html b/blog/2021/09/24/youpaicloud-usercase/index.html
deleted file mode 100644
index 38fd6c2..0000000
--- a/blog/2021/09/24/youpaicloud-usercase/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择? | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="h [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-作者陈卓,又拍云开发工程师,负责云存储、云处理和网关应用开发。</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="项目背景介绍"></a>项目背景介绍<a class="hash-link" href="#项目背景介绍" title="Direct link to heading">#</a></h2><p>目前市面上可执行 Ingress 的产品项目逐渐丰富了起来,可选择的范围也扩大了很多。这些产品按照架构大概可分为两类,一类像 k8s Ingress、Apache APISIX Ingress,他们是基于 Nginx、OpenResty 等传统代理器,使用 k8s-Client 和 Golang 去做 Controller。还有一类新兴的用 Golang 语言去实现代理和控制器功能,比如 Traefik。</p><p>又拍云最开始包括现在的大部分业务仍在使用 Ingress-Ng [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/28/WPS-usercase/index.html b/blog/2021/09/28/WPS-usercase/index.html
deleted file mode 100644
index 8a0877f..0000000
--- a/blog/2021/09/28/WPS-usercase/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-虽然自研成功,但在功能上却遗留了一些问题,比如:</p><ul><li>动态化只做到到 Upstream 维度</li><li>需要 Reload 才能带出新域名</li><li>底层设计简单,功能扩展能力不强</li></ul><p>后续我们对 API Gateway 功能有了强需求后,开始去调研相关的开源网关产品。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="为什么选择了-apache-apisix?"></a>为什么选择了 Apache APISIX?<a class="hash-link" href="#为什么选择了-apache-apisix?" title="Direct link to heading">#</a></h2><p>实际上 2019 年年底开始调研网关产品时,Kong 算是一个比较流行的选择。</p><p>但后续经过测试发现,Kong 的性能不太能满足我们的需求,同时我们认为 [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/2021/09/29/release-apache-apisix-2.10-en/index.html b/blog/2021/09/29/release-apache-apisix-2.10-en/index.html
index 9252130..4582f40 100644
--- a/blog/2021/09/29/release-apache-apisix-2.10-en/index.html
+++ b/blog/2021/09/29/release-apache-apisix-2.10-en/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Release Apache APISIX 2.10.0 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/09/29/release-apache-apisix-2.10/index.html b/blog/2021/09/29/release-apache-apisix-2.10/index.html
index b606594..71c43b1 100644
--- a/blog/2021/09/29/release-apache-apisix-2.10/index.html
+++ b/blog/2021/09/29/release-apache-apisix-2.10/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 2.10.0 正式发布,带来第一个 LTS 版本! | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="ht [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/09/30/weekly-report/index.html b/blog/2021/09/30/weekly-report/index.html
index 562f294..4759e32 100644
--- a/blog/2021/09/30/weekly-report/index.html
+++ b/blog/2021/09/30/weekly-report/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">社区周报|新晋 committer 一位,功能亮点更新进行中 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://api [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/2021/10/01/openEuler/index.html b/blog/2021/10/01/openEuler/index.html
index 73fbd5e..bef5cfe 100644
--- a/blog/2021/10/01/openEuler/index.html
+++ b/blog/2021/10/01/openEuler/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Apache APISIX 社区成员助力 openEuler 发布第一个社区创新版 | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 62d16d8..22c1328 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Archive | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Archive | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.or [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index 8b059e8..42f0bc6 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -44,144 +44,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验]]></title>
-        <id>百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验</id>
-        <link href="https://apisix.apache.org/blog/2021/09/28/WPS-usercase"/>
-        <updated>2021-09-28T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了金山办公如何使用 Apache APISIX 应对百万级 QPS 业务,同时基于 Apache APISIX 更新与改进网关实践层面的内容。]]></summary>
-        <author>
-            <name>张强</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?]]></title>
-        <id>Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?</id>
-        <link href="https://apisix.apache.org/blog/2021/09/24/youpaicloud-usercase"/>
-        <updated>2021-09-24T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了又拍云选择 Apache APISIX Ingress 后所带来公司内部网关架构的更新与调整,同时分享了在使用过程中的一些实践场景介绍。]]></summary>
-        <author>
-            <name>陈卓</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 助力便利充电创领者小电,实现云原生方案]]></title>
-        <id>Apache APISIX 助力便利充电创领者小电,实现云原生方案</id>
-        <link href="https://apisix.apache.org/blog/2021/09/18/xiaodian-usercase"/>
-        <updated>2021-09-18T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了国内便利充电创领者——小电通过应用 Apache APISIX,进行公司产品架构的云原生项目搭建的相关背景和实践介绍]]></summary>
-        <author>
-            <name>孙冉</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 在腾讯云智能钛平台中的落地实践]]></title>
-        <id>Apache APISIX 在腾讯云智能钛平台中的落地实践</id>
-        <link href="https://apisix.apache.org/blog/2021/09/16/tencent-cloud"/>
-        <updated>2021-09-16T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文主要介绍了腾讯云智能钛平台使用 Apache APISIX 的企业案例,以及使用 Apache APISIX 作为产品流量网关的具体例子。]]></summary>
-        <author>
-            <name>刁寿钧</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[社区周报|新晋 committer 两位,功能亮点更新进行中]]></title>
-        <id>社区周报|新晋 committer 两位,功能亮点更新进行中</id>
-        <link href="https://apisix.apache.org/blog/2021/09/15/weekly-report"/>
-        <updated>2021-09-15T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></summary>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理]]></title>
-        <id>Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理</id>
-        <link href="https://apisix.apache.org/blog/2021/09/14/youzan"/>
-        <updated>2021-09-14T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文主要介绍了有赞云原生 PaaS 平台使用 Apache APISIX 的企业案例,以及如何使用 Apache APISIX 作为产品流量网关的具体实例。]]></summary>
-        <author>
-            <name>戴诺璟</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持]]></title>
-        <id>纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持</id>
-        <link href="https://apisix.apache.org/blog/2021/09/13/china-mobile-cloud-usercase"/>
-        <updated>2021-09-13T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文整理自中国移动云能力中心陈焱山在 ApacheCon 2021 亚洲站的演讲,通过阅读本文,您可以了解到中国移动云是如何基于 Apache APISIX 进行产品的开发和功能改进与更新,打造出更完善的移动云对象存储。]]></summary>
-        <author>
-            <name>陈焱山</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[不写代码,如何为开源项目做贡献?]]></title>
-        <id>不写代码,如何为开源项目做贡献?</id>
-        <link href="https://apisix.apache.org/blog/2021/09/09/how-to-contribute-to-an-OpenSource-without-coding"/>
-        <updated>2021-09-09T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了很多不写代码为开源项目贡献的方式,可以通过写文章、做视频、对外分享、建立本地社区、积极参与社区讨论等方式参与到开源项目中。]]></summary>
-        <author>
-            <name>赵若妃</name>
-            <uri>https://github.com/Serendipity96</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[使用 Apache APISIX 进行集中式身份认证及进阶玩法]]></title>
-        <id>使用 Apache APISIX 进行集中式身份认证及进阶玩法</id>
-        <link href="https://apisix.apache.org/blog/2021/09/07/how-to-use-apisix-auth"/>
-        <updated>2021-09-07T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了 Apache APISIX 的身份认证功能,从重要性和玩法使用上进行了详细介绍和细节使用。]]></summary>
-        <author>
-            <name>朱欣欣</name>
-            <uri>https://github.com/starsz</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践]]></title>
-        <id>基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践</id>
-        <link href="https://apisix.apache.org/blog/2021/09/07/iQIYI-usercase"/>
-        <updated>2021-09-07T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文整理自爱奇艺高级研发师何聪在 Apache APISIX Meetup 上海站的演讲,通过阅读本文,您可以了解到基于 Apache APISIX 网关,爱奇艺技术团队是如何进行公司架构的更新与融合,打造出全新的网关服务。]]></summary>
-        <author>
-            <name>何聪</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Python 助你快速上手 Apache APISIX 插件开发]]></title>
-        <id>Python 助你快速上手 Apache APISIX 插件开发</id>
-        <link href="https://apisix.apache.org/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development"/>
-        <updated>2021-09-06T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[在 Apache APISIX Python Runner 之前社区中已经支持了 Java]]></summary>
-        <author>
-            <name>帅进超</name>
-            <uri>https://github.com/shuaijinchao</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX × KubeSphere:提供更好用的网关及 K8S Ingress Controller]]></title>
-        <id>Apache APISIX × KubeSphere:提供更好用的网关及 K8S Ingress Controller</id>
-        <link href="https://apisix.apache.org/blog/2021/08/31/Apache APISIX × KubeSphere-a-better-gateway-and-K8S-Ingress-Controller"/>
-        <updated>2021-08-31T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了在 KubeSphere 中使用 Apache APISIX 的官方 Helm 仓库直接部署 Apache APISIX 和 APISIX Ingress Controller 。并且 Apache APISIX 可通过作为网关,或者 APISIX Ingress Controller 的数据面来承载业务流量。]]></summary>
-        <author>
-            <name>张晋涛</name>
-            <uri>https://github.com/tao12345666333</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[社区会议| 周三下午 2 点,Apache APISIX Ingress 社区会议与你不见不散]]></title>
-        <id>社区会议| 周三下午 2 点,Apache APISIX Ingress 社区会议与你不见不散</id>
-        <link href="https://apisix.apache.org/blog/2021/08/30/Ingress-Meeting"/>
-        <updated>2021-08-30T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX Ingress 社区会议,建立与社区用户和开发者们的沟通渠道,帮助大家了解 Apache APISIX Ingress 的发展方向和开发计划。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 社区周报 | 2021 8.23-8.29]]></title>
-        <id>Apache APISIX 社区周报 | 2021 8.23-8.29</id>
-        <link href="https://apisix.apache.org/blog/2021/08/30/weekly-report"/>
-        <updated>2021-08-30T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></summary>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Release Apache APISIX 2.9]]></title>
         <id>Release Apache APISIX 2.9</id>
         <link href="https://apisix.apache.org/blog/2021/08/27/release-apache-apisix-2.9-en"/>
@@ -193,17 +55,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[Apache APISIX 2.9 正式发布,带来更多新功能!]]></title>
-        <id>Apache APISIX 2.9 正式发布,带来更多新功能!</id>
-        <link href="https://apisix.apache.org/blog/2021/08/27/release-apache-apisix-2.9"/>
-        <updated>2021-08-27T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 2.9 版本正式发布!该版本新增了 2 个新功能,进一步完善了对插件的支持。]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Authorization with Casbin in Apache APISIX]]></title>
         <id>Authorization with Casbin in Apache APISIX</id>
         <link href="https://apisix.apache.org/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX"/>
@@ -214,97 +65,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[使用 Apache APISIX 的 OpenID Connect 插件进行集中身份认证]]></title>
-        <id>使用 Apache APISIX 的 OpenID Connect 插件进行集中身份认证</id>
-        <link href="https://apisix.apache.org/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication"/>
-        <updated>2021-08-25T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文展示了使用 Apache APISIX OpenID Connect Plugin 进行 Okta 集中认证的过程。 本文包含了对Apache APISIX 和 Okta 集中认证的概念介绍,展示了在 Apache APISIX 中直接建立来自 Okta 的集中式身份认证的过程。这种集中认证的方法减少了开发者的学习和维护成本,提供了安全和精简的用户体验。]]></summary>
-        <author>
-            <name>朱欣欣</name>
-            <uri>https://github.com/starsz</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?]]></title>
-        <id>为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?</id>
-        <link href="https://apisix.apache.org/blog/2021/08/25/Why-Apache-APISIX-chose-Nginx-and-Lua"/>
-        <updated>2021-08-25T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文由深圳支流科技工程师罗泽轩撰写,介绍了 Apache APISIX 选用 Nginx + Lua 这个技术栈的历史背景和这个技术栈为 APISIX 带来的优势。罗泽轩是 OpenResty 开发者以及 Apache APISIX PMC。]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX Meetup 上海站全程回顾]]></title>
-        <id>Apache APISIX Meetup 上海站全程回顾</id>
-        <link href="https://apisix.apache.org/blog/2021/08/24/shanghai-meetup-recap"/>
-        <updated>2021-08-24T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[活动回顾:Apache APISIX Meetup 上海站议题分享及视频回顾。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[ApacheCon Asia 2021]]></title>
-        <id>ApacheCon Asia 2021</id>
-        <link href="https://apisix.apache.org/blog/2021/08/23/ApacheCon-Asia-2021"/>
-        <updated>2021-08-23T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[ApacheCon 是 Apache 软件基金会的官方全球系列会议。自 1998 年以来,ApacheCon 一直吸引着各个层次的参与者,在 350 多个 Apache 项目及其不同的社区中探索 “明日的技术”。ApacheCon Asia 是 ApacheCon 组委会针对亚太地区举办的 ApacheCon 在线会议,主要目标在于更好地服务亚太地区快速增长的 Apache 用户和贡献者。ApacheCon Asia 2021 于 2021 年 8 月 6-8 日在线举办。Apache APISIX 社区积极参与本次年度开源盛会,共提报了 8 个 API/微服务技术相关的议题,内容丰富。]]></summary>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 社区周报 | 2021 8.16-8.22]]></title>
-        <id>Apache APISIX 社区周报 | 2021 8.16-8.22</id>
-        <link href="https://apisix.apache.org/blog/2021/08/23/weekly-report"/>
-        <updated>2021-08-23T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></summary>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[8 月 21 日 Apache APISIX Meetup 上海站,欢迎报名参加!]]></title>
-        <id>8 月 21 日 Apache APISIX Meetup 上海站,欢迎报名参加!</id>
-        <link href="https://apisix.apache.org/blog/2021/08/21/shanghai-meetup"/>
-        <updated>2021-08-21T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本次 Meetup 由 api7.ai https://www.apiseven.com/ 发起,并邀请爱奇艺、空中云汇等合作伙伴共同为大家呈现。Apache APISIX PMC 成员、贡献者、社区技术专家汇聚一堂,共同探讨 Apache APISIX 社区发展、行业实践等话题。]]></summary>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Go 让 Apache APISIX 如虎添翼]]></title>
-        <id>Go 让 Apache APISIX 如虎添翼</id>
-        <link href="https://apisix.apache.org/blog/2021/08/19/go-makes-Apache-APISIX-better"/>
-        <updated>2021-08-19T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[这篇文章将详细讲解如何用 Go 来开发 Apache APISIX 插件。通过拥抱 Go 的生态圈,为 Apache APISIX 开创一片新天地,希望 Go 能让 Apache APISIX 如虎添翼!]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 社区周报 | 2021年8月9日~8月15日]]></title>
-        <id>Apache APISIX 社区周报 | 2021年8月9日~8月15日</id>
-        <link href="https://apisix.apache.org/blog/2021/08/19/weekly-report"/>
-        <updated>2021-08-19T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></summary>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[在 Apache APISIX 中使用 Casbin 进行授权]]></title>
-        <id>在 Apache APISIX 中使用 Casbin 进行授权</id>
-        <link href="https://apisix.apache.org/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX"/>
-        <updated>2021-08-18T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[当我们在使用 Apache APISIX 时,可能想要在应用里添加复杂的授权逻辑。在此篇文章中,我们将使用 Apache APISIX 的内置 Casbin 插件(authz-casbin)来实现基于角色的访问控制(RBAC)模型。]]></summary>
-        <author>
-            <name>Casbin 社区 &amp; Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨]]></title>
-        <id>Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨</id>
-        <link href="https://apisix.apache.org/blog/2021/08/17/interview-airwallex"/>
-        <updated>2021-08-17T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文采访了 Airwallex 空中云汇 Technical Platform Lead 李杨,李杨负责公司技术平台的演进。采访中详细介绍了 Airwallex 空中云汇在做技术选型时为什么选择 Apache APISIX、Apache APISIX 在 Airwallex 空中云汇的使用场景、Apache APISIX 在生产环境的表现等。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Using the Apache APISIX OpenID Connect Plugin for Okta Centralized Authentication]]></title>
         <id>Using the Apache APISIX OpenID Connect Plugin for Okta Centralized Authentication</id>
         <link href="https://apisix.apache.org/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication"/>
@@ -327,17 +87,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[贡献者,是衡量开源项目的金指标]]></title>
-        <id>贡献者,是衡量开源项目的金指标</id>
-        <link href="https://apisix.apache.org/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects"/>
-        <updated>2021-08-14T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文讲述了为什么贡献者数量变化是衡量开源项目的金指标。虽然 GitHub 已有的指标数量很多,例如 Star 数、Issue 数量和 PR 数量,但是这些指标都不能直观地反映出一个开源项目在一段时间内的变化趋势和活跃度。所以笔者 Yiyiyimu 提出了新的指标:贡献者增长和月度活跃贡献者,并创造了一款开源工具,其名为“献者图表”,方便 GitHub 用户使用这些指标来确认项目的活跃度。目前,多个开源项目已经在使用贡献者图表。]]></summary>
-        <author>
-            <name>吴舒旸</name>
-            <uri>https://github.com/Yiyiyimu</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Chaos Mesh Helps Apache APISIX Improve System Stability]]></title>
         <id>Chaos Mesh Helps Apache APISIX Improve System Stability</id>
         <link href="https://apisix.apache.org/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability"/>
@@ -349,69 +98,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[从新手村出来,我在 Apache APISIX 社区发出了第一个 PR]]></title>
-        <id>从新手村出来,我在 Apache APISIX 社区发出了第一个 PR</id>
-        <link href="https://apisix.apache.org/blog/2021/08/11/interview-TuZhengsong"/>
-        <updated>2021-08-11T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[这篇采访稿讲述了屠正松从开源社区小白成长为 Apache 顶级开源项目 APISIX committer 的历程。屠正松(GitHub ID:tzssangglass)因深度参与 Apache APISIX 的开发,在社区中贡献很多,2021 年 7 月 22 日被推选为 Apache APISIX committer。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-            <uri>https://github.com/Yangxiamao</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 架构分析:如何动态管理 Nginx 集群?]]></title>
-        <id>Apache APISIX 架构分析:如何动态管理 Nginx 集群?</id>
-        <link href="https://apisix.apache.org/blog/2021/08/10/apisix-nginx"/>
-        <updated>2021-08-10T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文转发自陶辉个人博客,主要介绍了基于APISIX 2.8 版本、OpenResty 1.19.3.2 版本以及 Nginx 1.19.3 版本进行 Apache APISIX 实现 REST API 远程控制 Nginx 集群的原理讲解。]]></summary>
-        <author>
-            <name>陶辉</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 在移动云的应用]]></title>
-        <id>Apache APISIX 在移动云的应用</id>
-        <link href="https://apisix.apache.org/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud"/>
-        <updated>2021-08-09T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[我们有幸采访了中国移动云能力中心的陈焱山,在采访中我们了解到中国移动公有云建设发展演进历程,了解了中国移动云为什么选择 Apache APISIX 作为负载均衡网关,并且知晓移动云后续的发展规划。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践]]></title>
-        <id>舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践</id>
-        <link href="https://apisix.apache.org/blog/2021/08/09/Apache-APISIX-in-Quliankeji"/>
-        <updated>2021-08-09T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了 Apache APISIX 在趣链科技 BaaS 平台中的落地实践情况,以及趣链科技在众多网关应用中选择 Apache APISIX 的原因。]]></summary>
-        <author>
-            <name>盛威锋</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[如何利用 Apache APISX 提升 Nginx 的可观测性]]></title>
-        <id>如何利用 Apache APISX 提升 Nginx 的可观测性</id>
-        <link href="https://apisix.apache.org/blog/2021/08/06/using-apache-apisix-to-improve-the-observability-of-nginx"/>
-        <updated>2021-08-06T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[最佳实践:本文将从 Nginx 可观测性、Apache APISIX 与 Nginx 的关系、Apache APISIX 可观测性,以及结合 Apache SkyWalking 进一步提升可观测性这些方面分享关于可观测性的方案与实践。]]></summary>
-        <author>
-            <name>金卫</name>
-            <uri>https://github.com/gxthrj</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Kong-To-APISIX 迁移工具]]></title>
-        <id>Kong-To-APISIX 迁移工具</id>
-        <link href="https://apisix.apache.org/blog/2021/08/05/Kong-to-APISIX"/>
-        <updated>2021-08-05T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 是一个生产可用的开源七层全流量处理平台,可作为 API 网关处理业务入口流量,具有极高性能、超低延迟,官方支持 dashboard 以及超过五十种插件。如果你正在使用 Kong,对 APISIX 感兴趣又苦于难以上手,不妨试试我们刚开源的迁移工具 Kong-To-APISIX,助你一键平滑迁移。]]></summary>
-        <author>
-            <name>吴舒旸</name>
-            <uri>https://github.com/Yiyiyimu</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Release Apache APISIX 2.8.0]]></title>
         <id>Release Apache APISIX 2.8.0</id>
         <link href="https://apisix.apache.org/blog/2021/07/28/release-apache-apisix-2.8-en"/>
@@ -423,58 +109,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[Apache APISIX 2.8 正式发布,带来更多新功能!]]></title>
-        <id>Apache APISIX 2.8 正式发布,带来更多新功能!</id>
-        <link href="https://apisix.apache.org/blog/2021/07/28/release-apache-apisix-2.8"/>
-        <updated>2021-07-28T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 2.8 版本正式发布!]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[插件编排在 Apache APISIX 中的应用与实践]]></title>
-        <id>插件编排在 Apache APISIX 中的应用与实践</id>
-        <link href="https://apisix.apache.org/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX"/>
-        <updated>2021-07-27T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[通过阅读本文,您可以了解 Apache APISIX 与基本使用场景,以及在低代码潮流下,Apache APISIX 是如何集成“拖拽”的插件编排能力的。本文作者琚致远,Apache APISIX PMC,在支流科技负责企业产品与大前端技术。]]></summary>
-        <author>
-            <name>琚致远</name>
-            <uri>https://github.com/juzhiyuan</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[ApacheCon Asia 2021:Apache APISIX 技术议题一览]]></title>
-        <id>ApacheCon Asia 2021:Apache APISIX 技术议题一览</id>
-        <link href="https://apisix.apache.org/blog/2021/07/25/apachecon-asia"/>
-        <updated>2021-07-25T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[ApacheCon 是 Apache 软件基金会的官方全球系列会议。自 1998 年以来,ApacheCon 一直吸引着各个层次的参与者,在 350 多个 Apache 项目及其不同的社区中探索 “明日的技术”。ApacheCon Asia 是 ApacheCon 组委会针对亚太地区举办的 ApacheCon 在线会议,主要目标在于更好地服务亚太地区快速增长的 Apache 用户和贡献者。ApacheCon Asia 2021 将于今年 8 月 6-8 日在线举办。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX x Kubernetes:恰到好处|直播预告]]></title>
-        <id>Apache APISIX x Kubernetes:恰到好处|直播预告</id>
-        <link href="https://apisix.apache.org/blog/2021/07/21/Apache-APISIX-Kubernetes"/>
-        <updated>2021-07-21T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[直播预告:北京时间 2021 年 7 月 23 日星期五 00:00,Apache APISIX committer 张晋涛将在 Data on Kubernetes Community 的 Meetup 上,面向全球开发者做主题为《Run Apache APISIX in Kubernetes》的分享。]]></summary>
-        <author>
-            <name>Apache APISIX 社区</name>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[基于 Apache APISIX,新浪微博 API 网关的定制化开发之路]]></title>
-        <id>基于 Apache APISIX,新浪微博 API 网关的定制化开发之路</id>
-        <link href="https://apisix.apache.org/blog/2021/07/14/the-road-to-customization-of-Sina-Weibo-API-gateway-based-on-Apache-APISIX"/>
-        <updated>2021-07-14T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[微博之前的 HTTP API 网关基于 NGINX 搭建,所有路由规则存放在 NGINX conf 配置文件中,带来一系列问题:升级步骤长,对服务增、删、改或跟踪问题时,不够灵活且难以排查问题。经过一番调研之后,我们选择了最接近预期、基于云原生的微服务 API 网关:Apache APISIX,借助其动态、高效、稳定等特性以满足业务的快速响应要求。]]></summary>
-        <author>
-            <name>聂永</name>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Apache APISIX has over 200 contributors in GitHub main repo! ]]></title>
         <id>Apache APISIX has over 200 contributors in GitHub main repo! </id>
         <link href="https://apisix.apache.org/blog/2021/07/06/celebrate-200-contributors"/>
@@ -486,17 +120,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[差之毫厘:etcd 3 完美支持 HTTP 访问?]]></title>
-        <id>差之毫厘:etcd 3 完美支持 HTTP 访问?</id>
-        <link href="https://apisix.apache.org/blog/2021/06/30/etcd3-support-HTTP-access-perfectly"/>
-        <updated>2021-06-30T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[从去年 10 月发布 Apache APISIX 2.0 版本以来,现在已经过去了 8 个月。在实践过程中,我们也发现了 etcd 的 HTTP API 的一些跟 gRPC API 交互的问题。事实上,拥有 gRPC-gateway 并不意味着能够完美支持 HTTP 访问,这里还是有些细微的差别。]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Release Apache APISIX 2.7.0]]></title>
         <id>Release Apache APISIX 2.7.0</id>
         <link href="https://apisix.apache.org/blog/2021/06/29/release-apache-apisix-2.7-en"/>
@@ -508,94 +131,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[Apache APISIX 2.7.0-Release 正式发布]]></title>
-        <id>Apache APISIX 2.7.0-Release 正式发布</id>
-        <link href="https://apisix.apache.org/blog/2021/06/29/release-apache-apisix-2.7"/>
-        <updated>2021-06-29T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 2.7.0-Release 正式发布!]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[有了 NGINX 和 Kong,为什么还需要 Apache APISIX]]></title>
-        <id>有了 NGINX 和 Kong,为什么还需要 Apache APISIX</id>
-        <link href="https://apisix.apache.org/blog/2021/06/28/why-we-need-Apache-APISIX"/>
-        <updated>2021-06-28T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了 Apache APISIX 架构演进历史,对比 Nginx 和 Kong 这两个框架 Apache APISIX 的优势是什么。]]></summary>
-        <author>
-            <name>王院生</name>
-            <uri>https://github.com/membphis</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Rancher × Apache APISIX: 极速部署更好用的开源网关和 Ingress Controller]]></title>
-        <id>Rancher × Apache APISIX: 极速部署更好用的开源网关和 Ingress Controller</id>
-        <link href="https://apisix.apache.org/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast"/>
-        <updated>2021-06-23T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[你可以在 Rancher 中使用 Apache APISIX 的官方 Helm 仓库直接部署 Apache APISIX 和 APISIX Ingress controller。并且 Apache APISIX 可通过作为网关,或者 APISIX Ingress controller 的数据面来承载业务流量。]]></summary>
-        <author>
-            <name>张晋涛</name>
-            <uri>https://github.com/tao12345666333</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[使用 Java 编写 Apache APISIX 插件]]></title>
-        <id>使用 Java 编写 Apache APISIX 插件</id>
-        <link href="https://apisix.apache.org/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins"/>
-        <updated>2021-06-21T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 支持多语言编写插件了!不会 Lua 也没关系,现在可以用你熟悉的语言编写插件,文末还有视频教程。]]></summary>
-        <author>
-            <name>屠正松</name>
-            <uri>https://github.com/tzssangglass</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布!]]></title>
-        <id>Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布!</id>
-        <link href="https://apisix.apache.org/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released"/>
-        <updated>2021-06-18T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX Ingress Controller v1.0 正式发布,可支持使用包括 ApisixRoute 和  ApisixUpstream 等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。]]></summary>
-        <author>
-            <name>张晋涛</name>
-            <uri>https://github.com/tao12345666333</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX Dashboard 访问控制绕过漏洞公告(CVE-2021-33190)]]></title>
-        <id>Apache APISIX Dashboard 访问控制绕过漏洞公告(CVE-2021-33190)</id>
-        <link href="https://apisix.apache.org/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement"/>
-        <updated>2021-06-17T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX Dashboard 访问控制绕过漏洞公告]]></summary>
-        <author>
-            <name>琚致远</name>
-            <uri>https://github.com/juzhiyuan</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Chaos Mesh 助力 Apache APISIX 提升稳定性]]></title>
-        <id>Chaos Mesh 助力 Apache APISIX 提升稳定性</id>
-        <link href="https://apisix.apache.org/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability"/>
-        <updated>2021-06-16T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文描述了如何在多种场景下使用 Chaos Mesh,为 Apache APISIX 提升稳定性。]]></summary>
-        <author>
-            <name>吴舒旸</name>
-            <uri>https://github.com/Yiyiyimu</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 和 Envoy 性能大比拼]]></title>
-        <id>Apache APISIX 和 Envoy 性能大比拼</id>
-        <link href="https://apisix.apache.org/blog/2021/06/10/Apache-APISIX-and-Envoy-performance-comparison"/>
-        <updated>2021-06-10T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文介绍了在一定条件下,Apache APISIX 和 Envoy 的性能对比,总体来说 APISIX 在响应延迟和 QPS 层面都略优于 Envoy, 由于 NGINX 的多 worker 的协作方式在高并发场景下更有优势,APISIX 在开启多个 worker 进程后性能提升较 Enovy 更为明显;APISIX 在性能和延迟上的表现使它在处理南北向流量上具有海量的吞吐能力,根据自己的业务场景来选择合理的组件配合插件构建自己的服务。]]></summary>
-        <author>
-            <name>王院生</name>
-            <uri>https://github.com/membphis</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Apache APISIX not affected by NGINX CVE-2021-23017]]></title>
         <id>Apache APISIX not affected by NGINX CVE-2021-23017</id>
         <link href="https://apisix.apache.org/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017"/>
@@ -607,49 +142,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[Apache APISIX 开源 2 周年!]]></title>
-        <id>Apache APISIX 开源 2 周年!</id>
-        <link href="https://apisix.apache.org/blog/2021/06/06/apisix-two-years"/>
-        <updated>2021-06-06T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX is now two years old, thanks for all contributors.]]></summary>
-        <author>
-            <name>赵若妃</name>
-            <uri>https://github.com/Serendipity96</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[来自 Apache APISIX committer 的经验分享 —— 编程之夏专访]]></title>
-        <id>来自 Apache APISIX committer 的经验分享 —— 编程之夏专访</id>
-        <link href="https://apisix.apache.org/blog/2021/06/03/experience-share-from-Apache-APISIX-committer"/>
-        <updated>2021-06-03T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本次采访邀请到了 Apache APISIX 的 committer,分享参与开源项目的心得体会]]></summary>
-        <author>
-            <name>赵若妃</name>
-            <uri>https://github.com/Serendipity96</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[Apache APISIX 2.6.0-Release 正式发布]]></title>
-        <id>Apache APISIX 2.6.0-Release 正式发布</id>
-        <link href="https://apisix.apache.org/blog/2021/05/25/Apache APISIX 2.6.0-Release 正式发布"/>
-        <updated>2021-05-25T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[Apache APISIX 2.6.0-Release 正式发布!欢迎大家下载使用。]]></summary>
-        <author>
-            <name>罗泽轩</name>
-            <uri>https://github.com/spacewander</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[支持 10 亿日流量的基础设施:当 Apahce APISIX 遇上腾讯]]></title>
-        <id>支持 10 亿日流量的基础设施:当 Apahce APISIX 遇上腾讯</id>
-        <link href="https://apisix.apache.org/blog/2021/05/24/Tencent-Games"/>
-        <updated>2021-05-24T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文整理自腾讯游戏负责内部容器平台的工程师徐鑫在 Apache APISIX Meetup - 深圳站的演讲,通过阅读本文,您不仅可以了解网关是什么、网关模式对传统服务架构的改进,还可以了解腾讯 OTeam 诞生的原因,以及 Apache APISIX 是如何在腾讯内部落地的。]]></summary>
-        <author>
-            <name>徐鑫</name>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Get Front-End Test Coverage with Cypress]]></title>
         <id>Get Front-End Test Coverage with Cypress</id>
         <link href="https://apisix.apache.org/blog/2021/03/02/get-front-end-test-coverage-with-cypress"/>
@@ -694,28 +186,6 @@
         </author>
     </entry>
     <entry>
-        <title type="html"><![CDATA[Apache APISIX 贡献者专访 | 普华永道华南数据安全与隐私保护团队高级安全顾问王鹏诚]]></title>
-        <id>Apache APISIX 贡献者专访 | 普华永道华南数据安全与隐私保护团队高级安全顾问王鹏诚</id>
-        <link href="https://apisix.apache.org/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team"/>
-        <updated>2021-01-11T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[近日,来自普华永道华南数据安全及隐私保护团队的高级安全顾问王鹏诚向国家信息安全漏洞共享平台(CNVD)和 Apache 软件基金会,报告了 Apache APISIX 的第一个 CVE:Apache APISIX Admin API 默认 Token 漏洞(CVE-2020-13945)。为了感谢鹏诚对 Apache APISIX 社区做的贡献,我们也特意对鹏诚进行了专访。]]></summary>
-        <author>
-            <name>温铭</name>
-            <uri>https://github.com/moonming</uri>
-        </author>
-    </entry>
-    <entry>
-        <title type="html"><![CDATA[初探 Kubernetes Service APIs]]></title>
-        <id>初探 Kubernetes Service APIs</id>
-        <link href="https://apisix.apache.org/blog/2020/12/18/a-first-look-at-kubernetes-service-api"/>
-        <updated>2020-12-18T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[本文通过提问的方式,对 Kubernetes Service APIs 做了一些基本介绍,从整体来看,Kubernetes Service APIs 提炼了很多 ingress 的最佳实践,比如表达能力的增强,其实就是扩展了 Route 的能力,再比如 BackendPolicy 对象,可以为 upstream 指定几乎所有的 Kubernetes 后端资源。]]></summary>
-        <author>
-            <name>金卫</name>
-            <uri>https://github.com/gxthrj</uri>
-        </author>
-    </entry>
-    <entry>
         <title type="html"><![CDATA[Envoy and Apache APISIX: Another way to implement the Envoy filter]]></title>
         <id>Envoy and Apache APISIX: Another way to implement the Envoy filter</id>
         <link href="https://apisix.apache.org/blog/2020/12/16/another-way-to-implement-envoy-filter"/>
@@ -726,14 +196,4 @@
             <uri>https://github.com/nic-chen</uri>
         </author>
     </entry>
-    <entry>
-        <title type="html"><![CDATA[贝壳找房:如何基于 Apache APISIX 搭建网关]]></title>
-        <id>贝壳找房:如何基于 Apache APISIX 搭建网关</id>
-        <link href="https://apisix.apache.org/blog/2020/12/11/beike-how-to-build-gateway-based-on-apache-apisix"/>
-        <updated>2020-12-11T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[贝壳找房使用 Apache APISIX 作为生产系统的 API 网关,每天处理过亿的生产流量,性能优异,而且很稳定。正好 Apache APISIX 刚刚加入 Apache 孵化器,除了恭喜之外,我想来分享下贝壳找房当初为什么选择 Apache APISIX,以及使用过程中的一些心得。]]></summary>
-        <author>
-            <name>王辉</name>
-        </author>
-    </entry>
 </feed>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 7161df9..0b4ea19 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -16,15 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-作者陈卓,又拍云开发工程师,负责云存储、云处理和网关应用开发。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/user-case">User Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?" href="/blog/2021/09/24/youpaicloud-usercase"><b>Read More</b></a></div></footer></article> [...]
-作者孙冉,运维专家。目前就职于小电平台架构部,主要负责 K8s 集群和 API 网关的相关部署。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/user-case">User Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Apache APISIX 助力便利充电创领者小电,实现云原生方案" href="/blog/2021/09/18/xiaodian-usercase"><b>Read More</b></a></div></footer></a [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index 7602022..d9004cd 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -16,15 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-和 <a href="https://github.com/apache/apisix-go-plugin-runner" target="_blank" rel="noopener noreferrer">Go</a> 语言的 Runner,今天 Python Runner
-也来了,社区中的小伙伴们在开发 Apache APISIX 的插件时又多了一种新选择。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/practical-case">Practical Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Python 助你快速上手 Apache APISIX 插件开发" href="/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-developme [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/page/3/index.html b/blog/page/3/index.html
deleted file mode 100644
index 832ce66..0000000
--- a/blog/page/3/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/page/4/index.html b/blog/page/4/index.html
deleted file mode 100644
index 5bc1bc5..0000000
--- a/blog/page/4/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/page/5/index.html b/blog/page/5/index.html
deleted file mode 100644
index ef7df5e..0000000
--- a/blog/page/5/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/page/6/index.html b/blog/page/6/index.html
deleted file mode 100644
index d7f34aa..0000000
--- a/blog/page/6/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/page/7/index.html b/blog/page/7/index.html
deleted file mode 100644
index 77a791e..0000000
--- a/blog/page/7/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/page/8/index.html b/blog/page/8/index.html
deleted file mode 100644
index 9e4bd46..0000000
--- a/blog/page/8/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Blog | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Blog | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index c2a6075..62681f9 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -36,104 +36,6 @@
             <description><![CDATA[Apache APISIX 2.10.0 版本正式发布!这是 Apache APISIX 首个 LTS 版本,同时支持 10+ 个新功能和新插件。]]></description>
         </item>
         <item>
-            <title><![CDATA[百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/28/WPS-usercase</link>
-            <guid>百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验</guid>
-            <pubDate>Tue, 28 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了金山办公如何使用 Apache APISIX 应对百万级 QPS 业务,同时基于 Apache APISIX 更新与改进网关实践层面的内容。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/24/youpaicloud-usercase</link>
-            <guid>Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?</guid>
-            <pubDate>Fri, 24 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了又拍云选择 Apache APISIX Ingress 后所带来公司内部网关架构的更新与调整,同时分享了在使用过程中的一些实践场景介绍。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 助力便利充电创领者小电,实现云原生方案]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/18/xiaodian-usercase</link>
-            <guid>Apache APISIX 助力便利充电创领者小电,实现云原生方案</guid>
-            <pubDate>Sat, 18 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了国内便利充电创领者——小电通过应用 Apache APISIX,进行公司产品架构的云原生项目搭建的相关背景和实践介绍]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 在腾讯云智能钛平台中的落地实践]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/16/tencent-cloud</link>
-            <guid>Apache APISIX 在腾讯云智能钛平台中的落地实践</guid>
-            <pubDate>Thu, 16 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文主要介绍了腾讯云智能钛平台使用 Apache APISIX 的企业案例,以及使用 Apache APISIX 作为产品流量网关的具体例子。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[社区周报|新晋 committer 两位,功能亮点更新进行中]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/15/weekly-report</link>
-            <guid>社区周报|新晋 committer 两位,功能亮点更新进行中</guid>
-            <pubDate>Wed, 15 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/14/youzan</link>
-            <guid>Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理</guid>
-            <pubDate>Tue, 14 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文主要介绍了有赞云原生 PaaS 平台使用 Apache APISIX 的企业案例,以及如何使用 Apache APISIX 作为产品流量网关的具体实例。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/13/china-mobile-cloud-usercase</link>
-            <guid>纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持</guid>
-            <pubDate>Mon, 13 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文整理自中国移动云能力中心陈焱山在 ApacheCon 2021 亚洲站的演讲,通过阅读本文,您可以了解到中国移动云是如何基于 Apache APISIX 进行产品的开发和功能改进与更新,打造出更完善的移动云对象存储。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[不写代码,如何为开源项目做贡献?]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/09/how-to-contribute-to-an-OpenSource-without-coding</link>
-            <guid>不写代码,如何为开源项目做贡献?</guid>
-            <pubDate>Thu, 09 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了很多不写代码为开源项目贡献的方式,可以通过写文章、做视频、对外分享、建立本地社区、积极参与社区讨论等方式参与到开源项目中。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[使用 Apache APISIX 进行集中式身份认证及进阶玩法]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/07/how-to-use-apisix-auth</link>
-            <guid>使用 Apache APISIX 进行集中式身份认证及进阶玩法</guid>
-            <pubDate>Tue, 07 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了 Apache APISIX 的身份认证功能,从重要性和玩法使用上进行了详细介绍和细节使用。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/07/iQIYI-usercase</link>
-            <guid>基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践</guid>
-            <pubDate>Tue, 07 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文整理自爱奇艺高级研发师何聪在 Apache APISIX Meetup 上海站的演讲,通过阅读本文,您可以了解到基于 Apache APISIX 网关,爱奇艺技术团队是如何进行公司架构的更新与融合,打造出全新的网关服务。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Python 助你快速上手 Apache APISIX 插件开发]]></title>
-            <link>https://apisix.apache.org/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development</link>
-            <guid>Python 助你快速上手 Apache APISIX 插件开发</guid>
-            <pubDate>Mon, 06 Sep 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[在 Apache APISIX Python Runner 之前社区中已经支持了 Java]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX × KubeSphere:提供更好用的网关及 K8S Ingress Controller]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/31/Apache APISIX × KubeSphere-a-better-gateway-and-K8S-Ingress-Controller</link>
-            <guid>Apache APISIX × KubeSphere:提供更好用的网关及 K8S Ingress Controller</guid>
-            <pubDate>Tue, 31 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了在 KubeSphere 中使用 Apache APISIX 的官方 Helm 仓库直接部署 Apache APISIX 和 APISIX Ingress Controller 。并且 Apache APISIX 可通过作为网关,或者 APISIX Ingress Controller 的数据面来承载业务流量。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[社区会议| 周三下午 2 点,Apache APISIX Ingress 社区会议与你不见不散]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/30/Ingress-Meeting</link>
-            <guid>社区会议| 周三下午 2 点,Apache APISIX Ingress 社区会议与你不见不散</guid>
-            <pubDate>Mon, 30 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX Ingress 社区会议,建立与社区用户和开发者们的沟通渠道,帮助大家了解 Apache APISIX Ingress 的发展方向和开发计划。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 社区周报 | 2021 8.23-8.29]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/30/weekly-report</link>
-            <guid>Apache APISIX 社区周报 | 2021 8.23-8.29</guid>
-            <pubDate>Mon, 30 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Release Apache APISIX 2.9]]></title>
             <link>https://apisix.apache.org/blog/2021/08/27/release-apache-apisix-2.9-en</link>
             <guid>Release Apache APISIX 2.9</guid>
@@ -141,13 +43,6 @@
             <description><![CDATA[Apache APISIX version 2.9 is released!]]></description>
         </item>
         <item>
-            <title><![CDATA[Apache APISIX 2.9 正式发布,带来更多新功能!]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/27/release-apache-apisix-2.9</link>
-            <guid>Apache APISIX 2.9 正式发布,带来更多新功能!</guid>
-            <pubDate>Fri, 27 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 2.9 版本正式发布!该版本新增了 2 个新功能,进一步完善了对插件的支持。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Authorization with Casbin in Apache APISIX]]></title>
             <link>https://apisix.apache.org/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX</link>
             <guid>Authorization with Casbin in Apache APISIX</guid>
@@ -155,76 +50,6 @@
             <description><![CDATA[When using Apache APISIX, you may want to add complex authorization logic to your application. In this article, we will use the built-in Casbin plugin (authz-casbin) of Apache APISIX to implement the role-based access control (RBAC) model.]]></description>
         </item>
         <item>
-            <title><![CDATA[使用 Apache APISIX 的 OpenID Connect 插件进行集中身份认证]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication</link>
-            <guid>使用 Apache APISIX 的 OpenID Connect 插件进行集中身份认证</guid>
-            <pubDate>Wed, 25 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文展示了使用 Apache APISIX OpenID Connect Plugin 进行 Okta 集中认证的过程。 本文包含了对Apache APISIX 和 Okta 集中认证的概念介绍,展示了在 Apache APISIX 中直接建立来自 Okta 的集中式身份认证的过程。这种集中认证的方法减少了开发者的学习和维护成本,提供了安全和精简的用户体验。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/25/Why-Apache-APISIX-chose-Nginx-and-Lua</link>
-            <guid>为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?</guid>
-            <pubDate>Wed, 25 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文由深圳支流科技工程师罗泽轩撰写,介绍了 Apache APISIX 选用 Nginx + Lua 这个技术栈的历史背景和这个技术栈为 APISIX 带来的优势。罗泽轩是 OpenResty 开发者以及 Apache APISIX PMC。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX Meetup 上海站全程回顾]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/24/shanghai-meetup-recap</link>
-            <guid>Apache APISIX Meetup 上海站全程回顾</guid>
-            <pubDate>Tue, 24 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[活动回顾:Apache APISIX Meetup 上海站议题分享及视频回顾。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[ApacheCon Asia 2021]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/23/ApacheCon-Asia-2021</link>
-            <guid>ApacheCon Asia 2021</guid>
-            <pubDate>Mon, 23 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[ApacheCon 是 Apache 软件基金会的官方全球系列会议。自 1998 年以来,ApacheCon 一直吸引着各个层次的参与者,在 350 多个 Apache 项目及其不同的社区中探索 “明日的技术”。ApacheCon Asia 是 ApacheCon 组委会针对亚太地区举办的 ApacheCon 在线会议,主要目标在于更好地服务亚太地区快速增长的 Apache 用户和贡献者。ApacheCon Asia 2021 于 2021 年 8 月 6-8 日在线举办。Apache APISIX 社区积极参与本次年度开源盛会,共提报了 8 个 API/微服务技术相关的议题,内容丰富。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 社区周报 | 2021 8.16-8.22]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/23/weekly-report</link>
-            <guid>Apache APISIX 社区周报 | 2021 8.16-8.22</guid>
-            <pubDate>Mon, 23 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[8 月 21 日 Apache APISIX Meetup 上海站,欢迎报名参加!]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/21/shanghai-meetup</link>
-            <guid>8 月 21 日 Apache APISIX Meetup 上海站,欢迎报名参加!</guid>
-            <pubDate>Sat, 21 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本次 Meetup 由 api7.ai https://www.apiseven.com/ 发起,并邀请爱奇艺、空中云汇等合作伙伴共同为大家呈现。Apache APISIX PMC 成员、贡献者、社区技术专家汇聚一堂,共同探讨 Apache APISIX 社区发展、行业实践等话题。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Go 让 Apache APISIX 如虎添翼]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/19/go-makes-Apache-APISIX-better</link>
-            <guid>Go 让 Apache APISIX 如虎添翼</guid>
-            <pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[这篇文章将详细讲解如何用 Go 来开发 Apache APISIX 插件。通过拥抱 Go 的生态圈,为 Apache APISIX 开创一片新天地,希望 Go 能让 Apache APISIX 如虎添翼!]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 社区周报 | 2021年8月9日~8月15日]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/19/weekly-report</link>
-            <guid>Apache APISIX 社区周报 | 2021年8月9日~8月15日</guid>
-            <pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[“独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[在 Apache APISIX 中使用 Casbin 进行授权]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX</link>
-            <guid>在 Apache APISIX 中使用 Casbin 进行授权</guid>
-            <pubDate>Wed, 18 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[当我们在使用 Apache APISIX 时,可能想要在应用里添加复杂的授权逻辑。在此篇文章中,我们将使用 Apache APISIX 的内置 Casbin 插件(authz-casbin)来实现基于角色的访问控制(RBAC)模型。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/17/interview-airwallex</link>
-            <guid>Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨</guid>
-            <pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文采访了 Airwallex 空中云汇 Technical Platform Lead 李杨,李杨负责公司技术平台的演进。采访中详细介绍了 Airwallex 空中云汇在做技术选型时为什么选择 Apache APISIX、Apache APISIX 在 Airwallex 空中云汇的使用场景、Apache APISIX 在生产环境的表现等。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Using the Apache APISIX OpenID Connect Plugin for Okta Centralized Authentication]]></title>
             <link>https://apisix.apache.org/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication</link>
             <guid>Using the Apache APISIX OpenID Connect Plugin for Okta Centralized Authentication</guid>
@@ -239,13 +64,6 @@
             <description><![CDATA[This article explains why changes in the number of contributors is the golden metric for measuring open source projects. While GitHub already has a number of metrics, such as Star count, Issue count, and PR count, none of these metrics can visually reflect the trends and activity of an open source project over time. So Yiyiyimu proposed new metrics, such as contributor growth and monthly active contributors, and created an open-source tool called the Con [...]
         </item>
         <item>
-            <title><![CDATA[贡献者,是衡量开源项目的金指标]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects</link>
-            <guid>贡献者,是衡量开源项目的金指标</guid>
-            <pubDate>Sat, 14 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文讲述了为什么贡献者数量变化是衡量开源项目的金指标。虽然 GitHub 已有的指标数量很多,例如 Star 数、Issue 数量和 PR 数量,但是这些指标都不能直观地反映出一个开源项目在一段时间内的变化趋势和活跃度。所以笔者 Yiyiyimu 提出了新的指标:贡献者增长和月度活跃贡献者,并创造了一款开源工具,其名为“献者图表”,方便 GitHub 用户使用这些指标来确认项目的活跃度。目前,多个开源项目已经在使用贡献者图表。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Chaos Mesh Helps Apache APISIX Improve System Stability]]></title>
             <link>https://apisix.apache.org/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability</link>
             <guid>Chaos Mesh Helps Apache APISIX Improve System Stability</guid>
@@ -253,48 +71,6 @@
             <description><![CDATA[This article explains how system stability create some pain points in different scenarios. Then it tells the stories of why the author chose Chaos Mesh as the ultimate solution,and how to use Chaos Mesh in Apache APISIX. In the end, there is also future plans for this solution, including run a chaos test in E2E simulation scenarios, add chaos tests to more Apache APISIX projects, and add features to Chaos Mesh.]]></description>
         </item>
         <item>
-            <title><![CDATA[从新手村出来,我在 Apache APISIX 社区发出了第一个 PR]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/11/interview-TuZhengsong</link>
-            <guid>从新手村出来,我在 Apache APISIX 社区发出了第一个 PR</guid>
-            <pubDate>Wed, 11 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[这篇采访稿讲述了屠正松从开源社区小白成长为 Apache 顶级开源项目 APISIX committer 的历程。屠正松(GitHub ID:tzssangglass)因深度参与 Apache APISIX 的开发,在社区中贡献很多,2021 年 7 月 22 日被推选为 Apache APISIX committer。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 架构分析:如何动态管理 Nginx 集群?]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/10/apisix-nginx</link>
-            <guid>Apache APISIX 架构分析:如何动态管理 Nginx 集群?</guid>
-            <pubDate>Tue, 10 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文转发自陶辉个人博客,主要介绍了基于APISIX 2.8 版本、OpenResty 1.19.3.2 版本以及 Nginx 1.19.3 版本进行 Apache APISIX 实现 REST API 远程控制 Nginx 集群的原理讲解。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 在移动云的应用]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud</link>
-            <guid>Apache APISIX 在移动云的应用</guid>
-            <pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[我们有幸采访了中国移动云能力中心的陈焱山,在采访中我们了解到中国移动公有云建设发展演进历程,了解了中国移动云为什么选择 Apache APISIX 作为负载均衡网关,并且知晓移动云后续的发展规划。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/09/Apache-APISIX-in-Quliankeji</link>
-            <guid>舍弃 Kong 和 Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践</guid>
-            <pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了 Apache APISIX 在趣链科技 BaaS 平台中的落地实践情况,以及趣链科技在众多网关应用中选择 Apache APISIX 的原因。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[如何利用 Apache APISX 提升 Nginx 的可观测性]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/06/using-apache-apisix-to-improve-the-observability-of-nginx</link>
-            <guid>如何利用 Apache APISX 提升 Nginx 的可观测性</guid>
-            <pubDate>Fri, 06 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[最佳实践:本文将从 Nginx 可观测性、Apache APISIX 与 Nginx 的关系、Apache APISIX 可观测性,以及结合 Apache SkyWalking 进一步提升可观测性这些方面分享关于可观测性的方案与实践。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Kong-To-APISIX 迁移工具]]></title>
-            <link>https://apisix.apache.org/blog/2021/08/05/Kong-to-APISIX</link>
-            <guid>Kong-To-APISIX 迁移工具</guid>
-            <pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 是一个生产可用的开源七层全流量处理平台,可作为 API 网关处理业务入口流量,具有极高性能、超低延迟,官方支持 dashboard 以及超过五十种插件。如果你正在使用 Kong,对 APISIX 感兴趣又苦于难以上手,不妨试试我们刚开源的迁移工具 Kong-To-APISIX,助你一键平滑迁移。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Release Apache APISIX 2.8.0]]></title>
             <link>https://apisix.apache.org/blog/2021/07/28/release-apache-apisix-2.8-en</link>
             <guid>Release Apache APISIX 2.8.0</guid>
@@ -302,41 +78,6 @@
             <description><![CDATA[Apache APISIX version 2.8 is released!]]></description>
         </item>
         <item>
-            <title><![CDATA[Apache APISIX 2.8 正式发布,带来更多新功能!]]></title>
-            <link>https://apisix.apache.org/blog/2021/07/28/release-apache-apisix-2.8</link>
-            <guid>Apache APISIX 2.8 正式发布,带来更多新功能!</guid>
-            <pubDate>Wed, 28 Jul 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 2.8 版本正式发布!]]></description>
-        </item>
-        <item>
-            <title><![CDATA[插件编排在 Apache APISIX 中的应用与实践]]></title>
-            <link>https://apisix.apache.org/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX</link>
-            <guid>插件编排在 Apache APISIX 中的应用与实践</guid>
-            <pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[通过阅读本文,您可以了解 Apache APISIX 与基本使用场景,以及在低代码潮流下,Apache APISIX 是如何集成“拖拽”的插件编排能力的。本文作者琚致远,Apache APISIX PMC,在支流科技负责企业产品与大前端技术。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[ApacheCon Asia 2021:Apache APISIX 技术议题一览]]></title>
-            <link>https://apisix.apache.org/blog/2021/07/25/apachecon-asia</link>
-            <guid>ApacheCon Asia 2021:Apache APISIX 技术议题一览</guid>
-            <pubDate>Sun, 25 Jul 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[ApacheCon 是 Apache 软件基金会的官方全球系列会议。自 1998 年以来,ApacheCon 一直吸引着各个层次的参与者,在 350 多个 Apache 项目及其不同的社区中探索 “明日的技术”。ApacheCon Asia 是 ApacheCon 组委会针对亚太地区举办的 ApacheCon 在线会议,主要目标在于更好地服务亚太地区快速增长的 Apache 用户和贡献者。ApacheCon Asia 2021 将于今年 8 月 6-8 日在线举办。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX x Kubernetes:恰到好处|直播预告]]></title>
-            <link>https://apisix.apache.org/blog/2021/07/21/Apache-APISIX-Kubernetes</link>
-            <guid>Apache APISIX x Kubernetes:恰到好处|直播预告</guid>
-            <pubDate>Wed, 21 Jul 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[直播预告:北京时间 2021 年 7 月 23 日星期五 00:00,Apache APISIX committer 张晋涛将在 Data on Kubernetes Community 的 Meetup 上,面向全球开发者做主题为《Run Apache APISIX in Kubernetes》的分享。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[基于 Apache APISIX,新浪微博 API 网关的定制化开发之路]]></title>
-            <link>https://apisix.apache.org/blog/2021/07/14/the-road-to-customization-of-Sina-Weibo-API-gateway-based-on-Apache-APISIX</link>
-            <guid>基于 Apache APISIX,新浪微博 API 网关的定制化开发之路</guid>
-            <pubDate>Wed, 14 Jul 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[微博之前的 HTTP API 网关基于 NGINX 搭建,所有路由规则存放在 NGINX conf 配置文件中,带来一系列问题:升级步骤长,对服务增、删、改或跟踪问题时,不够灵活且难以排查问题。经过一番调研之后,我们选择了最接近预期、基于云原生的微服务 API 网关:Apache APISIX,借助其动态、高效、稳定等特性以满足业务的快速响应要求。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Apache APISIX has over 200 contributors in GitHub main repo! ]]></title>
             <link>https://apisix.apache.org/blog/2021/07/06/celebrate-200-contributors</link>
             <guid>Apache APISIX has over 200 contributors in GitHub main repo! </guid>
@@ -344,13 +85,6 @@
             <description><![CDATA[Apache APISIX has over 200 contributors in GitHub main repo!]]></description>
         </item>
         <item>
-            <title><![CDATA[差之毫厘:etcd 3 完美支持 HTTP 访问?]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/30/etcd3-support-HTTP-access-perfectly</link>
-            <guid>差之毫厘:etcd 3 完美支持 HTTP 访问?</guid>
-            <pubDate>Wed, 30 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[从去年 10 月发布 Apache APISIX 2.0 版本以来,现在已经过去了 8 个月。在实践过程中,我们也发现了 etcd 的 HTTP API 的一些跟 gRPC API 交互的问题。事实上,拥有 gRPC-gateway 并不意味着能够完美支持 HTTP 访问,这里还是有些细微的差别。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Release Apache APISIX 2.7.0]]></title>
             <link>https://apisix.apache.org/blog/2021/06/29/release-apache-apisix-2.7-en</link>
             <guid>Release Apache APISIX 2.7.0</guid>
@@ -358,62 +92,6 @@
             <description><![CDATA[Apache APISIX 2.7.0 has been released!]]></description>
         </item>
         <item>
-            <title><![CDATA[Apache APISIX 2.7.0-Release 正式发布]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/29/release-apache-apisix-2.7</link>
-            <guid>Apache APISIX 2.7.0-Release 正式发布</guid>
-            <pubDate>Tue, 29 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 2.7.0-Release 正式发布!]]></description>
-        </item>
-        <item>
-            <title><![CDATA[有了 NGINX 和 Kong,为什么还需要 Apache APISIX]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/28/why-we-need-Apache-APISIX</link>
-            <guid>有了 NGINX 和 Kong,为什么还需要 Apache APISIX</guid>
-            <pubDate>Mon, 28 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了 Apache APISIX 架构演进历史,对比 Nginx 和 Kong 这两个框架 Apache APISIX 的优势是什么。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Rancher × Apache APISIX: 极速部署更好用的开源网关和 Ingress Controller]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast</link>
-            <guid>Rancher × Apache APISIX: 极速部署更好用的开源网关和 Ingress Controller</guid>
-            <pubDate>Wed, 23 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[你可以在 Rancher 中使用 Apache APISIX 的官方 Helm 仓库直接部署 Apache APISIX 和 APISIX Ingress controller。并且 Apache APISIX 可通过作为网关,或者 APISIX Ingress controller 的数据面来承载业务流量。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[使用 Java 编写 Apache APISIX 插件]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins</link>
-            <guid>使用 Java 编写 Apache APISIX 插件</guid>
-            <pubDate>Mon, 21 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 支持多语言编写插件了!不会 Lua 也没关系,现在可以用你熟悉的语言编写插件,文末还有视频教程。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布!]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released</link>
-            <guid>Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布!</guid>
-            <pubDate>Fri, 18 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX Ingress Controller v1.0 正式发布,可支持使用包括 ApisixRoute 和  ApisixUpstream 等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX Dashboard 访问控制绕过漏洞公告(CVE-2021-33190)]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement</link>
-            <guid>Apache APISIX Dashboard 访问控制绕过漏洞公告(CVE-2021-33190)</guid>
-            <pubDate>Thu, 17 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX Dashboard 访问控制绕过漏洞公告]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Chaos Mesh 助力 Apache APISIX 提升稳定性]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability</link>
-            <guid>Chaos Mesh 助力 Apache APISIX 提升稳定性</guid>
-            <pubDate>Wed, 16 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文描述了如何在多种场景下使用 Chaos Mesh,为 Apache APISIX 提升稳定性。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 和 Envoy 性能大比拼]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/10/Apache-APISIX-and-Envoy-performance-comparison</link>
-            <guid>Apache APISIX 和 Envoy 性能大比拼</guid>
-            <pubDate>Thu, 10 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文介绍了在一定条件下,Apache APISIX 和 Envoy 的性能对比,总体来说 APISIX 在响应延迟和 QPS 层面都略优于 Envoy, 由于 NGINX 的多 worker 的协作方式在高并发场景下更有优势,APISIX 在开启多个 worker 进程后性能提升较 Enovy 更为明显;APISIX 在性能和延迟上的表现使它在处理南北向流量上具有海量的吞吐能力,根据自己的业务场景来选择合理的组件配合插件构建自己的服务。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Apache APISIX not affected by NGINX CVE-2021-23017]]></title>
             <link>https://apisix.apache.org/blog/2021/06/07/Apache-APISIX-not-affected-by-NGINX-CVE-2021-23017</link>
             <guid>Apache APISIX not affected by NGINX CVE-2021-23017</guid>
@@ -421,34 +99,6 @@
             <description><![CDATA[On May 26, NGINX issued a security announcement that fixed a DNS resolver vulnerability (CVE -2021-23017) in the NGINX resolver.]]></description>
         </item>
         <item>
-            <title><![CDATA[Apache APISIX 开源 2 周年!]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/06/apisix-two-years</link>
-            <guid>Apache APISIX 开源 2 周年!</guid>
-            <pubDate>Sun, 06 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX is now two years old, thanks for all contributors.]]></description>
-        </item>
-        <item>
-            <title><![CDATA[来自 Apache APISIX committer 的经验分享 —— 编程之夏专访]]></title>
-            <link>https://apisix.apache.org/blog/2021/06/03/experience-share-from-Apache-APISIX-committer</link>
-            <guid>来自 Apache APISIX committer 的经验分享 —— 编程之夏专访</guid>
-            <pubDate>Thu, 03 Jun 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本次采访邀请到了 Apache APISIX 的 committer,分享参与开源项目的心得体会]]></description>
-        </item>
-        <item>
-            <title><![CDATA[Apache APISIX 2.6.0-Release 正式发布]]></title>
-            <link>https://apisix.apache.org/blog/2021/05/25/Apache APISIX 2.6.0-Release 正式发布</link>
-            <guid>Apache APISIX 2.6.0-Release 正式发布</guid>
-            <pubDate>Tue, 25 May 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[Apache APISIX 2.6.0-Release 正式发布!欢迎大家下载使用。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[支持 10 亿日流量的基础设施:当 Apahce APISIX 遇上腾讯]]></title>
-            <link>https://apisix.apache.org/blog/2021/05/24/Tencent-Games</link>
-            <guid>支持 10 亿日流量的基础设施:当 Apahce APISIX 遇上腾讯</guid>
-            <pubDate>Mon, 24 May 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文整理自腾讯游戏负责内部容器平台的工程师徐鑫在 Apache APISIX Meetup - 深圳站的演讲,通过阅读本文,您不仅可以了解网关是什么、网关模式对传统服务架构的改进,还可以了解腾讯 OTeam 诞生的原因,以及 Apache APISIX 是如何在腾讯内部落地的。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Get Front-End Test Coverage with Cypress]]></title>
             <link>https://apisix.apache.org/blog/2021/03/02/get-front-end-test-coverage-with-cypress</link>
             <guid>Get Front-End Test Coverage with Cypress</guid>
@@ -477,32 +127,11 @@
             <description><![CDATA[Amazon EKS provides flexibility to start, run, and scale Kubernetes applications in the AWS cloud or on-premises. This article explains how to run Ingress APISIX on it.This article explains how to run Ingress APISIX on Amazon EKS.]]></description>
         </item>
         <item>
-            <title><![CDATA[Apache APISIX 贡献者专访 | 普华永道华南数据安全与隐私保护团队高级安全顾问王鹏诚]]></title>
-            <link>https://apisix.apache.org/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team</link>
-            <guid>Apache APISIX 贡献者专访 | 普华永道华南数据安全与隐私保护团队高级安全顾问王鹏诚</guid>
-            <pubDate>Mon, 11 Jan 2021 00:00:00 GMT</pubDate>
-            <description><![CDATA[近日,来自普华永道华南数据安全及隐私保护团队的高级安全顾问王鹏诚向国家信息安全漏洞共享平台(CNVD)和 Apache 软件基金会,报告了 Apache APISIX 的第一个 CVE:Apache APISIX Admin API 默认 Token 漏洞(CVE-2020-13945)。为了感谢鹏诚对 Apache APISIX 社区做的贡献,我们也特意对鹏诚进行了专访。]]></description>
-        </item>
-        <item>
-            <title><![CDATA[初探 Kubernetes Service APIs]]></title>
-            <link>https://apisix.apache.org/blog/2020/12/18/a-first-look-at-kubernetes-service-api</link>
-            <guid>初探 Kubernetes Service APIs</guid>
-            <pubDate>Fri, 18 Dec 2020 00:00:00 GMT</pubDate>
-            <description><![CDATA[本文通过提问的方式,对 Kubernetes Service APIs 做了一些基本介绍,从整体来看,Kubernetes Service APIs 提炼了很多 ingress 的最佳实践,比如表达能力的增强,其实就是扩展了 Route 的能力,再比如 BackendPolicy 对象,可以为 upstream 指定几乎所有的 Kubernetes 后端资源。]]></description>
-        </item>
-        <item>
             <title><![CDATA[Envoy and Apache APISIX: Another way to implement the Envoy filter]]></title>
             <link>https://apisix.apache.org/blog/2020/12/16/another-way-to-implement-envoy-filter</link>
             <guid>Envoy and Apache APISIX: Another way to implement the Envoy filter</guid>
             <pubDate>Wed, 16 Dec 2020 00:00:00 GMT</pubDate>
             <description><![CDATA[Envoy is an L7 proxy and communication bus designed for large modern service oriented architectures. A pluggable filter chain mechanism allows filters to be written to perform different tasks and inserted into the main server.]]></description>
         </item>
-        <item>
-            <title><![CDATA[贝壳找房:如何基于 Apache APISIX 搭建网关]]></title>
-            <link>https://apisix.apache.org/blog/2020/12/11/beike-how-to-build-gateway-based-on-apache-apisix</link>
-            <guid>贝壳找房:如何基于 Apache APISIX 搭建网关</guid>
-            <pubDate>Fri, 11 Dec 2020 00:00:00 GMT</pubDate>
-            <description><![CDATA[贝壳找房使用 Apache APISIX 作为生产系统的 API 网关,每天处理过亿的生产流量,性能优异,而且很稳定。正好 Apache APISIX 刚刚加入 Apache 孵化器,除了恭喜之外,我想来分享下贝壳找房当初为什么选择 Apache APISIX,以及使用过程中的一些心得。]]></description>
-        </item>
     </channel>
 </rss>
\ No newline at end of file
diff --git a/blog/tags/community/index.html b/blog/tags/community/index.html
index c1deec4..c6ebca8 100644
--- a/blog/tags/community/index.html
+++ b/blog/tags/community/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">3 posts tagged with &quot;Community&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="3 posts tagged with &quot;Community&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">One post tagged with &quot;Community&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="One post tagged with &quot;Community&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-rea [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/events/index.html b/blog/tags/events/index.html
index 38c218e..9d67cf6 100644
--- a/blog/tags/events/index.html
+++ b/blog/tags/events/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">14 posts tagged with &quot;Events&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="14 posts tagged with &quot;Events&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-hel [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">3 posts tagged with &quot;Events&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="3 posts tagged with &quot;Events&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helme [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 7fa0990..1152967 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Tags | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="Tags | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/interview/index.html b/blog/tags/interview/index.html
deleted file mode 100644
index d6ae0a4..0000000
--- a/blog/tags/interview/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">5 posts tagged with &quot;Interview&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="5 posts tagged with &quot;Interview&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/blog/tags/practical-case/index.html b/blog/tags/practical-case/index.html
index 7c5c41e..cbf8c96 100644
--- a/blog/tags/practical-case/index.html
+++ b/blog/tags/practical-case/index.html
@@ -15,16 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">16 posts tagged with &quot;Practical Case&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="16 posts tagged with &quot;Practical Case&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><met [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">5 posts tagged with &quot;Practical Case&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="5 posts tagged with &quot;Practical Case&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta  [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-和 <a href="https://github.com/apache/apisix-go-plugin-runner" target="_blank" rel="noopener noreferrer">Go</a> 语言的 Runner,今天 Python Runner
-也来了,社区中的小伙伴们在开发 Apache APISIX 的插件时又多了一种新选择。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/practical-case">Practical Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Python 助你快速上手 Apache APISIX 插件开发" href="/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-developme [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
index d4a6c3e..46219e2 100644
--- a/blog/tags/release/index.html
+++ b/blog/tags/release/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">10 posts tagged with &quot;Release&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="10 posts tagged with &quot;Release&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-h [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">5 posts tagged with &quot;Release&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="5 posts tagged with &quot;Release&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-hel [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/security/index.html b/blog/tags/security/index.html
index 2d3336c..08f47d3 100644
--- a/blog/tags/security/index.html
+++ b/blog/tags/security/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">2 posts tagged with &quot;Security&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="2 posts tagged with &quot;Security&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-h [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">One post tagged with &quot;Security&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="One post tagged with &quot;Security&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/technology/index.html b/blog/tags/technology/index.html
index c2648c3..6a1ffd9 100644
--- a/blog/tags/technology/index.html
+++ b/blog/tags/technology/index.html
@@ -15,14 +15,14 @@
 <link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">10 posts tagged with &quot;Technology&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="10 posts tagged with &quot;Technology&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-r [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">3 posts tagged with &quot;Technology&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="3 posts tagged with &quot;Technology&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-rea [...]
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/user-case/index.html b/blog/tags/user-case/index.html
deleted file mode 100644
index d3fa2c1..0000000
--- a/blog/tags/user-case/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.6">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-WQLBQL6GY3"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-WQLBQL6GY3",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache APISIX® --  Cloud-Native API Gateway" href="/opensearch.xml">
-<link rel="alternate" type="application/rss+xml" href="/releases/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/releases/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">11 posts tagged with &quot;User Case&quot; | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" property="og:title" content="11 posts tagged with &quot;User Case&quot; | Apache APISIX® --  Cloud-Native API Gateway"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-rea [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
-<div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-作者陈卓,又拍云开发工程师,负责云存储、云处理和网关应用开发。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/user-case">User Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Apache APISIX Ingress 为何成为又拍云打造容器网关的新选择?" href="/blog/2021/09/24/youpaicloud-usercase"><b>Read More</b></a></div></footer></article> [...]
-作者孙冉,运维专家。目前就职于小电平台架构部,主要负责 K8s 集群和 API 网关的相关部署。</p></blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_2ga9 padding--none margin-left--sm"><li class="tag_11ep"><a class="tag_1Okp tagRegular_3MiF" href="/blog/tags/user-case">User Case</a></li></ul></div><div class="col col--3 text--right"><a aria-label="Read more about Apache APISIX 助力便利充电创领者小电,实现云原生方案" href="/blog/2021/09/18/xiaodian-usercase"><b>Read More</b></a></div></footer></a [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/FAQ/index.html b/docs/apisix/2.10.0/FAQ/index.html
index ddcb391..614e543 100644
--- a/docs/apisix/2.10.0/FAQ/index.html
+++ b/docs/apisix/2.10.0/FAQ/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">FAQ | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favicon [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -34,7 +34,7 @@ See the <code>Hot reload</code> section in <a href="/docs/apisix/2.10.0/plugins.
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">$ acme.sh  --issue  --staging  -d demo.domain --renew-hook </span><span class="token string" style="color:#e3116c">&quot;/root/.acme.sh/renew-hook-update-apisix.sh  -h http://apisix-admin:port -p /root/.acme.sh/demo.domain/demo.domain.cer -k /root/.acme.sh/demo.domain/demo.domain.key -a xxxxxxxxxxxxx&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><spa [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">$ acme.sh --renew --domain demo.domain</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
 </span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>Blog <a href="https://juejin.cn/post/6965778290619449351" target="_blank" rel="noopener noreferrer">https://juejin.cn/post/6965778290619449351</a> has detail setup.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="how-to-strip-route-prefix-for-path-matching"></a>How to strip route prefi [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/IGNORE_DOC/index.html b/docs/apisix/2.10.0/IGNORE_DOC/index.html
index 92805bf..ee343a7 100644
--- a/docs/apisix/2.10.0/IGNORE_DOC/index.html
+++ b/docs/apisix/2.10.0/IGNORE_DOC/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">IGNORE_DOC | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/ [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/admin-api/index.html b/docs/apisix/2.10.0/admin-api/index.html
index 693df99..749a472 100644
--- a/docs/apisix/2.10.0/admin-api/index.html
+++ b/docs/apisix/2.10.0/admin-api/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Admin API | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/f [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -86,7 +86,7 @@ This feature requires APISIX to run on <a href="/docs/apisix/2.10.0/how-to-build
 used when all the nodes with higher priority are unavailable or tried.</p><p>As the default priority is 0, we can configure nodes with negative priority as the backup.</p><p>For example:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly json"><pre tabindex="0" class="prism-code language-json codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="tok [...]
 Therefore, it is the backup of <code>127.0.0.1</code>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="response-parameters-3"></a>Response Parameters<a class="hash-link" href="#response-parameters-3" title="Direct link to heading">#</a></h3><p>Return response from etcd currently.</p><p><a href="#table-of-contents">Back to TOC</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7- [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;http://127.0.0.1:9080/apisix/admin/plugins/key-auth&quot;</span><span class="token plain"> -H </span><span class="token string" style="color:#e3116c">&#x27;X-API-KEY: edd1c9f034335f136f87ad84b625c8f1&#x27;</span><span class="token plain"></span> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/apisix/index.html b/docs/apisix/2.10.0/architecture-design/apisix/index.html
index 244c032..efc0b84 100644
--- a/docs/apisix/2.10.0/architecture-design/apisix/index.html
+++ b/docs/apisix/2.10.0/architecture-design/apisix/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">APISIX | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 and keep other configurations as default. The configuration in <code>config.yaml</code> should be like this:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apisix</span><span class="token punctuati [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">etcd</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">host</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/consumer/index.html b/docs/apisix/2.10.0/architecture-design/consumer/index.html
index 73f1020..3007724 100644
--- a/docs/apisix/2.10.0/architecture-design/consumer/index.html
+++ b/docs/apisix/2.10.0/architecture-design/consumer/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Consumer | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/fa [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -29,7 +29,7 @@
 </span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>Use the <a href="/docs/apisix/2.10.0/plugins/consumer-restriction">consumer-restriction</a> plug-in to restrict the access of Jack to this API.</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color: [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Repeated tests, all return 403; Jack is forbidden to access this API</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://127.0.0.1:9080/hello -H </span><spa [...]
 </span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/apisix/edit/master/docs/en/latest/architecture-design/consumer.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBo [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/debug-mode/index.html b/docs/apisix/2.10.0/architecture-design/debug-mode/index.html
index 33d0a87..cc50632 100644
--- a/docs/apisix/2.10.0/architecture-design/debug-mode/index.html
+++ b/docs/apisix/2.10.0/architecture-design/debug-mode/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Debug Mode | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/ [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -25,7 +25,7 @@
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">hello world</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>If the information can not be delivered via HTTP response header, for example, the plugin is in stream
 subsystem, the information will be logged in the error log with <code>warn</code> level.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="advanced-debug-mode"></a>Advanced Debug Mode<a class="hash-link" href="#advanced-debug-mode" title="Direct link to heading">#</a></h3><p>Enable advanced debug mode by modifying the configuration in <code>conf/debug.yaml</code> file. Because there will be a check every second, only the checker re [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">hook_phase</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># Module Function List, Name: hook_phase</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">  </ [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/global-rule/index.html b/docs/apisix/2.10.0/architecture-design/global-rule/index.html
index 39880b3..c050057 100644
--- a/docs/apisix/2.10.0/architecture-design/global-rule/index.html
+++ b/docs/apisix/2.10.0/architecture-design/global-rule/index.html
@@ -16,14 +16,14 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Global rule | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 We can register a global <a href="/docs/apisix/2.10.0/architecture-design/plugin">Plugin</a> with <code>GlobalRule</code>:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="tok [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/plugin-config/index.html b/docs/apisix/2.10.0/architecture-design/plugin-config/index.html
index 6027171..7aacaf8 100644
--- a/docs/apisix/2.10.0/architecture-design/plugin-config/index.html
+++ b/docs/apisix/2.10.0/architecture-design/plugin-config/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Plugin Config | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//i [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -25,7 +25,7 @@
 bind it with a route directly.</p><p>For instance, you can do something like:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># create a plugin config</span><span class="token plain [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># bind it to route</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://127.0.0.1:9080/apisix/admin/routes/1 -H </span><span class="token string" style="color: [...]
 will be merged into it. The same plugin in the plugin config will override one in the <code>plugins</code>.</p><p>For example, when we configure a plugin config</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly bash"><pre tabindex="0" class="prism-code language-bash codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="col [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/plugin/index.html b/docs/apisix/2.10.0/architecture-design/plugin/index.html
index 49aee20..9e18c25 100644
--- a/docs/apisix/2.10.0/architecture-design/plugin/index.html
+++ b/docs/apisix/2.10.0/architecture-design/plugin/index.html
@@ -16,14 +16,14 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Plugin | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 then its execution will be skipped.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="hot-reload-in-stand-alone-mode"></a>Hot reload in stand-alone mode<a class="hash-link" href="#hot-reload-in-stand-alone-mode" title="Direct link to heading">#</a></h3><p>For stand-alone mode, see plugin related section in <a href="/docs/apisix/2.10.0/stand-alone">stand alone mode</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/route/index.html b/docs/apisix/2.10.0/architecture-design/route/index.html
index cdb164e..2860603 100644
--- a/docs/apisix/2.10.0/architecture-design/route/index.html
+++ b/docs/apisix/2.10.0/architecture-design/route/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Route | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favic [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">HTTP/1.1 </span><span class="token number" style="color:#36acaa">201</span><span class="token plain"> Created</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Date: Sat, </span><span class="token number" style="color:#36acaa">31</span><span class="token plain"> Aug </span><span class="token number" style="color:#36acaa">2019</span><span class="token plain"> 01:17:15 [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;node&quot;</span><span class="token plain">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;value&quot;</span><span class="token plain">:</span><span class="token punctuation" style="color:#393A34">{</span [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/router/index.html b/docs/apisix/2.10.0/architecture-design/router/index.html
index 78e1c46..17d4162 100644
--- a/docs/apisix/2.10.0/architecture-design/router/index.html
+++ b/docs/apisix/2.10.0/architecture-design/router/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Router | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/script/index.html b/docs/apisix/2.10.0/architecture-design/script/index.html
index ca98430..747ee53 100644
--- a/docs/apisix/2.10.0/architecture-design/script/index.html
+++ b/docs/apisix/2.10.0/architecture-design/script/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Script | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/favi [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/service/index.html b/docs/apisix/2.10.0/architecture-design/service/index.html
index a05f848..9417b01 100644
--- a/docs/apisix/2.10.0/architecture-design/service/index.html
+++ b/docs/apisix/2.10.0/architecture-design/service/index.html
@@ -16,15 +16,15 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Service | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/fav [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># create new Route and reference the service by id `200`</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://127.0.0.1:9080/apisix/admin/routes/100 -H </span><s [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://127.0.0.1:9080/apisix/admin/routes/101 -H </span><span class="token string" style="color:#e3116c">&#x27;X-API-KEY: edd1c9f034335f136f87ad84b625c8f1&#x27;</span><span class="token plain"> -X PUT -d </span><span class="token string" style="color:#e3116c">&#x27;</span></span><span class="token-line" styl [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/architecture-design/upstream/index.html b/docs/apisix/2.10.0/architecture-design/upstream/index.html
index 105996a..0e3b871 100644
--- a/docs/apisix/2.10.0/architecture-design/upstream/index.html
+++ b/docs/apisix/2.10.0/architecture-design/upstream/index.html
@@ -16,13 +16,13 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Upstream | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/fa [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
 <div><a href="#" class="skipToContent_1oUP">Skip to main content</a></div><div class="announcementBar_3WsW" style="background-color:#e8433e;color:white" role="banner"><div class="announcementBarPlaceholder_2m9F"></div><div class="announcementBarContent_3EUC">🤔 Have queries regarding apache APISIX, Join slack channel to discuss them <a target="_blank" rel="noopener noreferrer" href="https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg">join #apisix channel</a> [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/aws/index.html b/docs/apisix/2.10.0/aws/index.html
index 997969e..f6e4d25 100644
--- a/docs/apisix/2.10.0/aws/index.html
+++ b/docs/apisix/2.10.0/aws/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Running APISIX in AWS with AWS CDK | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https:/ [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -44,7 +44,7 @@
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">Non-authoritative answer:</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Name:   apiSi-PhpSe-FOL2MM4TW7G8-09029e095ab36fcc.elb.us-west-2.amazonaws.com</span></span><span class="token-line" style="color:#393A34"><span class="token plain">Address: </span><span class="token number" style="color:#36acaa">44.224</span><span class="token plain">.124.213</span></span><sp [...]
 <img src="https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/aws-define-service.png">
 <img src="https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/aws-define-route.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor anchor__h2 anchorWithHideOnScrollNavbar_3R7-" id="validation"></a>Validation<a class="hash-link" href="#validation" title="Direct link to heading">#</a></h2><p>OK. Let&#x27;s test the <code>/index.php</code> on <code>{apiSix.ApiSixServiceServiceURL}/index.php</code></p><p><img src="https://raw.githubusercontent.com/apache/apis [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/batch-processor/index.html b/docs/apisix/2.10.0/batch-processor/index.html
index a1cfc15..cd10581 100644
--- a/docs/apisix/2.10.0/batch-processor/index.html
+++ b/docs/apisix/2.10.0/batch-processor/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Batch Processor | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org/ [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -32,7 +32,7 @@ argument and the batch configuration as the second parameter.</p><div class="cod
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">if batch_processor then</span></span><span class="token-line" style="color:#393A34"><span class="token plain">    batch_processor:push({hello=&#x27;world&#x27;})</span></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o clean-btn">Copy</button></div></div><p>Note: P [...]
 The timer to flush the batch runs based on the <code>inactive_timeout</code> configuration. Thus, for optimal usage,
 keep the <code>inactive_timeout</code> smaller than the <code>buffer_duration</code>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/apisix/edit/master/docs/en/latest/batch-processor.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-hidden="true"><g><path d="m [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/benchmark/index.html b/docs/apisix/2.10.0/benchmark/index.html
index 10dba46..82d9f61 100644
--- a/docs/apisix/2.10.0/benchmark/index.html
+++ b/docs/apisix/2.10.0/benchmark/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Benchmark | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img/f [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -27,7 +27,7 @@ and the response size was 1KB.</p><h4><a aria-hidden="true" tabindex="-1" class=
 <img src="https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/flamegraph-1.jpg" alt="flamegraph-1"></p><p>And if you want to run the benchmark test in your machine, you should run another Nginx to listen 80 port.</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class=" [...]
 and the response size was 1KB.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor anchor__h4 anchorWithHideOnScrollNavbar_3R7-" id="qps-1"></a>QPS<a class="hash-link" href="#qps-1" title="Direct link to heading">#</a></h4><p>The x-axis means the size of CPU core, and the y-axis is QPS.</p><p><img src="https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/benchmark-2.jpg" alt="benchmark-2"></p><h4><a aria-hidden="true" tabindex="-1" class="anchor anchor__h4 ancho [...]
 <img src="https://raw.githubusercontent.com/apache/apisix/master/docs/assets/images/flamegraph-2.jpg" alt="flamegraph-2"></p><p>And if you want to run the benchmark test in your machine, you should run another Nginx to listen 80 port.</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly shell"><pre tabindex="0" class="prism-code language-shell codeBlock_23N8 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_39YC"><span class=" [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/certificate/index.html b/docs/apisix/2.10.0/certificate/index.html
index 9e99f41..167a171 100644
--- a/docs/apisix/2.10.0/certificate/index.html
+++ b/docs/apisix/2.10.0/certificate/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Certificate | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -37,7 +37,7 @@ and RSA key-exchange algorithm, then just configure the extra certificates (the
 first certificate and private key should be still put in <code>cert</code> and <code>key</code>) and
 private keys by <code>certs</code> and <code>keys</code>.</p><ul><li><code>certs</code>: PEM-encoded certificate array.</li><li><code>keys</code>: PEM-encoded private key array.</li></ul><p><code>APISIX</code> will pair certificate and private key with the same indice as a SSL key
 pair. So the length of <code>certs</code> and <code>keys</code> must be same.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/apisix/edit/master/docs/en/latest/certificate.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-hidden="true"><g><path d="m34.5 11.7l-3 [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/control-api/index.html b/docs/apisix/2.10.0/control-api/index.html
index b50e579..cc8df06 100644
--- a/docs/apisix/2.10.0/control-api/index.html
+++ b/docs/apisix/2.10.0/control-api/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Control API | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apisix.apache.org//img [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -29,7 +29,7 @@ of fields like <code>consumer_schema</code> or <code>type</code>, it is depended
 definition.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="get-v1healthcheck"></a>GET /v1/healthcheck<a class="hash-link" href="#get-v1healthcheck" title="Direct link to heading">#</a></h3><p>Introduced since <code>v2.3</code>.</p><p>Return current <a href="/docs/apisix/2.10.0/health-check">health check</a> status in the format below:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly json"><pre tabindex=" [...]
 object with id 1 creates a health checker, the <code>src_type</code> is <code>upstreams</code> and the <code>src_id</code> is <code>1</code>.</li><li>name: the name of the health checker.</li><li>nodes: the target nodes of the health checker.</li><li>healthy_nodes: the healthy node known by the health checker.</li></ul><p>User can also use <code>/v1/healthcheck/$src_type/$src_id</code> can get the status of a health checker.</p><p>For example, <code>GET /v1/healthcheck/upstreams/1</code> [...]
 Note that when you enable stream proxy, APISIX will run another Lua VM for the stream subsystem. It won&#x27;t trigger a full GC in this Lua VM .</p><h3><a aria-hidden="true" tabindex="-1" class="anchor anchor__h3 anchorWithHideOnScrollNavbar_3R7-" id="get-v1routes"></a>Get /v1/routes<a class="hash-link" href="#get-v1routes" title="Direct link to heading">#</a></h3><p>Introduced since <code>v3.0</code>.</p><p>Return all routes info in the format below:</p><div class="codeBlockContainer_K [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
+<script src="/assets/js/runtime~main.a082ee80.js"></script>
+<script src="/assets/js/main.df478bd3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/apisix/2.10.0/customize-nginx-configuration/index.html b/docs/apisix/2.10.0/customize-nginx-configuration/index.html
index badc778..c16b824 100644
--- a/docs/apisix/2.10.0/customize-nginx-configuration/index.html
+++ b/docs/apisix/2.10.0/customize-nginx-configuration/index.html
@@ -16,8 +16,8 @@
 <link rel="alternate" type="application/rss+xml" href="/articles/rss.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/articles/atom.xml" title="Apache APISIX® --  Cloud-Native API Gateway Blog Atom Feed">
 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"><title data-react-helmet="true">Customize Nginx configuration | Apache APISIX® --  Cloud-Native API Gateway</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:image" content="https://apisix.apache.org//img/favicon.png"><meta data-react-helmet="true" name="twitter:image" content="https://apis [...]
-<link rel="preload" href="/assets/js/runtime~main.083e7f2c.js" as="script">
-<link rel="preload" href="/assets/js/main.16bacc18.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a082ee80.js" as="script">
+<link rel="preload" href="/assets/js/main.df478bd3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
@@ -25,7 +25,7 @@
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">            location /ysec_status </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain">                req_status_show;</span></span><span class="token-line" style="color:#393A34"><span class="token plain">                allow 127.0.0.1;</span></span><span class="token-line" [...]
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">        chunked_transfer_encoding on;</span></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block">
 </span></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">http_server_configuration_snippet</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span></span><span class="token-line" style="color:#393A34"><span class="token scalar  [...]
-<script src="/assets/js/runtime~main.083e7f2c.js"></script>
-<script src="/assets/js/main.16bacc18.js"></script>
... 56719 lines suppressed ...