Распоредување И Онлајн

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