Распоредување И Онлајн
i18n.site
прифаќа архитектура на апликација на една страница , а влезната страница и содржината на веб-локацијата се распоредени независно.
По извршувањето на горенаведениот превод, директориумите htm
и v
ќе се генерираат под директориумот md/out/dev
.
Овде, dev
значи дека е изграден врз основа на конфигурациската датотека .i18n/htm/dev.yml
.
dev
директориум :
Директориумот htm
е влезната страница на веб-страницата.
Директориумот v
содржи содржина на веб-локација со броеви на верзии.
Локалниот преглед не се грижи за бројот на верзијата и ќе ги копира сите датотеки во директориумот out/dev/v/0.1.0
.
За официјално објавување, променетите датотеки ќе бидат копирани во директориумот со броеви на новата верзија.
Наведете Конфигурациска Датотека Со -c
Различни конфигурациски датотеки ќе создадат соодветни директориуми во директориумот out
.
На пример, .i18n/htm/main.yml
ќе го создаде директориумот out/main
.
dev.yml
и main.yml
се стандардните конфигурации.
dev
е кратенка од development
, што ја означува околината за развој, што се користи за локален преглед, а исто така е стандардна конфигурациска датотека.
ol
е кратенката од online
, што ја -n
онлајн околината, која се користи за официјално објавување npm
Можете исто така да креирате други конфигурациски датотеки Користете --htm_conf
на командната линија за да го одредите името на конфигурациската датотека што треба да се користи:
на пример:
i18n.site --htm_conf dist --save
Овде --save
го претставува бројот на верзијата на изданието на ажурирањето.
Објавувајте содржина на npmjs.com
Објавувањето содржина на npmjs.com
npm Се & Објави
Инсталирајте nodejs
, најавете се со npm login
.
Уредете го md/.i18n/htm/main.yml
и сменете ја вредноста од md:
YOUR_NPM_PACKAGE
npmjs.com сопствено име на npm
пакети.
Потоа изменете го md/.i18n/htm/main.package.json
Извршете i18n.site --npm
или i18n.site -n
во директориумот md
за да преведете и објавите.
Ако користите средина за континуирана интеграција за објавување, нема потреба да инсталирате nodejs
Само копирајте ги дозволите за најавени и објавување ~/.npmrc
во околината.
Ако го измените името на пакетот од v:
во main.yml
, не заборавајте прво да избришете .i18n/v/main
, а потоа да го објавите.
Прокси-Сервер Објавен Од npm
Ако корисниците во Кина наидат на проблеми со мрежата и не можат да објават npm
пакети, тие можат да ја постават променливата на околината https_proxy
за да го конфигурираат прокси-серверот.
Претпоставувајќи дека вашата порта за прокси-сервер е 7890
, можете да напишете:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Само-Домаќина Содржина
Ако сакате сами да ја хостирате содржината, прво уредете го md/.i18n/htm/main.yml
и сменете го v: //unpkg.com/i18n.site
во префиксот на URL-то, како на пример v: //i18n-v.xxx.com
.
Внесете го директориумот md
и стартувајте
i18n.site --htm_conf ol --save
или кратенка
i18n.site -c ol -s
Потоа, конфигурирајте ја содржината во директориумот md/out/main/v
на патеката на префиксот на URL поставена во v:
.
Конечно, конфигурирајте го времето за кеширање на патеката што завршува на /.v
до 1s
, инаку до новообјавената содржина не може веднаш да се пристапи.
Времето на кешот за други патеки може да се постави на една година или повеќе за да се намалат непотребните барања.
Домаќин На Содржината На s3
За само-домаќин на содржина, покрај користењето на вашиот сопствен сервер, друга CDN
опција е да користите S3
+
S3
S3
го користите rclone
i18n.site -c ol -s
s3=your-s3
bucket=your-bucket
ver=$(head -1 .i18n/v/main/v.hash | cut -c 2-)
rclone copy --overwrite-dir out/main/htm/v/$ver $s3:/$bucket/$ver
rclone copy out/main/v/.v "$s3:/$bucket/"
Запомнете да го конфигурирате CDN
така што времето на кеширање на патеката што завршува на /.v
е 1s
, инаку до новообјавената содржина не може веднаш да се пристапи.
Објави Веб-Страница
Веб-страницата може да се распореди насекаде github page и cloudflare page се добри избори.
Бидејќи веб-локацијата користи архитектура на апликација на една страница , не заборавајте да ги преработите патеките на URL-то што не содржат .
до index.html
.
Страницата за влез на веб-локација треба да се распореди само еднаш, и нема потреба повторно да се распореди страницата за влез на веб-локација за последователни ажурирања на содржината.
Распоредете На Страницата github
Прво кликнете github за да креирате организација Следното име на организацијата е i18n-demo
како пример.
Потоа креирајте складиште i18n-demo.github.io
под оваа организација (ве молиме заменете го i18n-demo
со името на организацијата што сте го создале):
При објавување на содржината во претходната статија, out/main/htm
е генерирана Ве молиме внесете го овој директориум и стартувајте :
ln -s index.html 404.html
Бидејќи github page
не поддржува препишување на патеката на URL-то, наместо тоа се користи 404.html
.
Потоа извршете ја следнава команда во директориумот htm
(не заборавајте да го замените i18n-demo/i18n-demo.github.io.git
со вашата сопствена адреса на магацин) :
git init
git branch -M main
git remote add origin [email protected]:i18n-demo/i18n-demo.github.io.git
git push -u origin main -f
Откако ќе го притиснете кодот, почекајте успешно да се изврши распоредувањето на github page
(како што е прикажано подолу) пред да можете да му пристапите.
За демо страница, ве молиме погледнете:
https://i18n-demo.github.io
Распоредете На Страницата cloudflare
cloudflare page споредба со github page
, тој обезбедува препишување на патеката и е попријателски настроен кон копното на Кина и се препорачува да се користи.
Распоредувањето на cloudflare page
обично се заснова на распоредувањето на github page
погоре.
Направете проект и врзете го складиштето i18n-demo.github.io
погоре.
Процесот е прикажан на сликата подолу:
Ве молиме кликнете Add Account
за да дозволите пристап до организацијата i18n-demo
.
Ако сте го врзале складиштето на друга организација, можеби ќе треба да кликнете двапати на Add Account
за да овластите двапати пред да се прикаже новата организација.
Следно, изберете магацин i18n-demo.github.io
, потоа кликнете Begin setup
и користете ги стандардните вредности за следните чекори.
По првото врзување, треба да почекате неколку минути пред да можете да му пристапите.
По распоредувањето, можете да поврзете сопствено име на домен.
Откако ќе го поврзете приспособеното име на домен, одете до името на доменот за да го конфигурирате препишувањето на патеката на апликацијата на една страница, како што е прикажано подолу:
Правилата на горната слика се како i18n.site
следува.
(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
)
Дополнително, ве молиме конфигурирајте ги правилата за кешот, како што е прикажано подолу, и поставете го времетраењето на кешот на еден месец.
Променете го името на доменот што се совпаѓа во вториот чекор на сликата погоре во името на доменот што го врзавте.
Оптимизирање На Распоредувањето На Веб-Страниците Во Кина
Ако сакате да добиете подобри перформанси за пристапност во мрежното опкружување на континентална Кина, прво регистрирајте име на домен .
Потоа, користете го складирањето на објекти на продавачите на облак во Кина + Распоредете out/main/htm
CDN
Можете да го користите edge computing за да ја преработите патеката за прилагодување на апликациите на една страница На пример, Baidu Smart Cloud CDN
може да се конфигурира вака:
const uri = r.uri, p = uri.lastIndexOf(".");
if (
p < 0 ||
!"|js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest|".includes(
"|" + uri.slice(p + 1) + "|",
)
) {
const ua = r.headersIn["User-Agent"].toLowerCase()
if (/facebookexternalhit|slurp|bot|spider|curl/.test(ua)) {
r.return(
302,
(/baidu|yisou|sogou|360|byte/.test(ua) ? "/zh" : "/en") + r.uri + ".htm",
)
} else {
r.uri = "/index.html"
}
}
r.respHeader(() => {
const t = [], out = r.headersOut;
["Content-MD5", "Age", "Expires", "Last-Modified"].forEach(
i => delete out[i]
)
r.rawHeadersOut.forEach(i => {
const key = i[0].toLowerCase()
if (key.startsWith("x-") || key.startsWith("ohc-")) {
delete out[key]
}
})
out["Cache-Control"] = "max-age=" + 9e5
// Заглавјата на одговорот може да се постават на излез за отстранување грешки, како што е надвор.XXX = 'MSG';
})
Бидејќи записот MX
и записот CNAME
не можат да коегзистираат, ако сакате да примате е-пошта со име на домен во исто време, треба да соработувате со cname_flatten до ниво CNAME
во записот A
.
Дополнително, бидејќи трошоците за прекуокеански сообраќај на продавачите на облак во Кина се релативно скапи, ако сакате да ги оптимизирате трошоците, можете да ја користите DNS географска резолуција на Huawei Cloud и приспособеното име на доменот Cloudflare for SaaS (како што е прикажано подолу). пренасочување на сообраќајот──Рутирање на сообраќај во континентална Кина Baidu Cloud CDN
, меѓународниот сообраќај оди cloudflare .
Овие решенија за оптимизација на распоредувањето се посложени и ќе бидат воведени во посебни поглавја во иднина.
Пренасочување На Генеричко Име На Домен
Ако користите i18n.site
за да генерирате веб-локација како главна веб-локација, обично треба да го конфигурирате пренасочувањето на пан-доменот, односно да го пренасочите пристапот до *.xxx.com
(вклучувајќи www.xxx.com
) на xxx.com
.
Ова барање може да се постигне со помош на Alibaba Cloud CDN
EdgeScript
( англиски документ / кинески документ )
Додадете го името на доменот во Alibaba CDN и посочете го името на доменот *.xxx.com
до CNAME
во Alibaba Cloud CDN
.
На пример, конфигурацијата за пренасочување на името на пан-доменот од *.i18n.site
на сликата погоре е како што следува:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
Распоредете Со nginx
Ве молиме додадете конфигурација out/main/htm
на /root/i18n/md/out/main/htm
во пасус server
од nginx
location / {
root /root/i18n/md/out/main/htm;
add_header Cache-Control "max-age=9999999";
if ($uri !~* \.(avif|css|html|ico|js|json|png|svg|txt|webmanifest|xml)$) {
rewrite ^ /index.html last;
}
}
Врз Основа На github action
Континуирана Интеграција
Можете да се повикате на следново за да го конфигурирате вашиот github action
:
name: i18n.site
on:
workflow_dispatch:
push:
branches:
- main
- dist
jobs:
i18n:
permissions:
repository-projects: write
contents: write
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: https://i18n.site
uses: i18n-site/github-action-i18n.site@main
with:
I18N_SITE_TOKEN: ${{ secrets.I18N_SITE_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Како што може да се види во конфигурацијата, овој работен тек се активира кога се турка до гранката main
и гранката dist
.
Работниот тек ќе ја користи конфигурациската датотека што одговара на името на гранката за да го објави документот Овде, .i18n/htm/main.yml
и .i18n/htm/dist.yml
ќе се користат како конфигурација за објавување.
Ги препорачуваме следниве најдобри практики за процесот на објавување документи:
Кога промените се туркаат до гранката main
, документот се активира за да се изгради и да се распореди во станицата за преглед (станицата за преглед е достапна github page ).
Откако ќе се потврди дека документот е точен на страницата за преглед, кодот ќе се спои и ќе се префрли во филијалата dist
, а официјалната изработка и распоредување ќе бидат онлајн.
Се разбира, спроведувањето на горенаведениот процес бара пишување повеќе конфигурации.
Можете да се повикате на вистинскиот проект за скриптирање на работниот тек github.com/fcdoc/doc
secrets.I18N_SITE_TOKEN
и secrets.NPM_TOKEN
во конфигурацијата бараат од вас да ги конфигурирате тајните променливи во базата на кодови.
I18N_SITE_TOKEN
i18n.site/token
NPM_TOKEN
е токен npmjs.com објавување на пакетот npm
во конфигурацијата.
Структура На Директориумот
public
Статични датотеки на веб-локацијата, како што се favicon.ico
, robots.txt
, итн.
Датотеките со икони овде може да се генерираат со realfavicongenerator.net
.i18n
Под директориумот .i18n
се конфигурациските датотеки, кешот за превод итн. на i18n.site
Видете го следното поглавје „Конфигурација“ за детали.
en
Директориум на изворниот јазик, што одговара на конфигурациската датотека en
од fromTo
во .i18n/conf.yml
i18n:
fromTo:
en: zh
Ве молиме погледнете ја конфигурацијата на преводот i18