<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Cloudflare_Workers_Sites</id>
	<title>Cloudflare Workers Sites - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Cloudflare_Workers_Sites"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Cloudflare_Workers_Sites&amp;action=history"/>
	<updated>2026-10-12T10:39:21Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://mediawiki.zina.run/index.php?title=Cloudflare_Workers_Sites&amp;diff=855&amp;oldid=prev</id>
		<title>&gt;Zina: /* Установка Wrangler */</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Cloudflare_Workers_Sites&amp;diff=855&amp;oldid=prev"/>
		<updated>2022-05-27T06:32:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Установка Wrangler&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;←[[Cloudflare]]&lt;br /&gt;
&lt;br /&gt;
* [https://developers.cloudflare.com/workers/ Cloudflare Workers documentation]&lt;br /&gt;
&lt;br /&gt;
Требуется [https://workers.cloudflare.com/#plans Workers Paid plan] — 5$ в месяц:&lt;br /&gt;
&lt;br /&gt;
Free:&lt;br /&gt;
* Deploy up to 30 Worker scripts&lt;br /&gt;
* Runs on all 250 network locations&lt;br /&gt;
* Free workers.dev subdomain&lt;br /&gt;
* Up to 10ms CPU time per request&lt;br /&gt;
* Lowest latency after the first request&lt;br /&gt;
Paid — Everything in Free, plus:&lt;br /&gt;
* Up to 30s wall time per request&lt;br /&gt;
* Always lowest latency&lt;br /&gt;
* Additional Workers KV edge storage&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Paid !! Free&lt;br /&gt;
|-&lt;br /&gt;
| 1 GB - Key-value storage space || 1 GB - Key-value storage space&lt;br /&gt;
|-&lt;br /&gt;
| 10M - Key-value reads per month || 100,000 - Key-value reads per day (3M per month)&lt;br /&gt;
|-&lt;br /&gt;
| 1M - Key-value writes per month || 1,000 - Key-value writes per day (0,03M per month)&lt;br /&gt;
|-&lt;br /&gt;
| 1M - Key-value deletes per month || 1,000 - Key-value deletes per day (0,03M per month)&lt;br /&gt;
|-&lt;br /&gt;
| 1M - Key-value lists per month || 1,000 - Key-value lists per day (0,03M per month)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Old:&lt;br /&gt;
&lt;br /&gt;
* up to 30 sites&lt;br /&gt;
* Free workers.dev subdomain&lt;br /&gt;
* 1 gigabyte of storage&lt;br /&gt;
* Runs on all 194 data centers&lt;br /&gt;
&lt;br /&gt;
== Установка Wrangler ==&lt;br /&gt;
&lt;br /&gt;
Установите [https://github.com/cloudflare/wrangler Wrangler]:&lt;br /&gt;
&lt;br /&gt;
 sudo npm install @cloudflare/wrangler -g --unsafe-perm=true --allow-root&lt;br /&gt;
&lt;br /&gt;
== Авторизация Wrangler ==&lt;br /&gt;
&lt;br /&gt;
Есть два способа авторизации:&lt;br /&gt;
&lt;br /&gt;
— через браузер:&lt;br /&gt;
&lt;br /&gt;
 wrangler login&lt;br /&gt;
&lt;br /&gt;
— через создание токена на https://dash.cloudflare.com/profile/api-tokens (в правой колонке &amp;#039;&amp;#039;&amp;#039;Get your API token&amp;#039;&amp;#039;&amp;#039;) и затем вставку его в команду:&lt;br /&gt;
&lt;br /&gt;
 wrangler config&lt;br /&gt;
&lt;br /&gt;
В обоих случаях данные авторизации сохраняются в файле &amp;lt;code&amp;gt;~/.wrangler/config/default.toml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание простого сайта в Cloudflare Workers == &lt;br /&gt;
&lt;br /&gt;
Перейдите в корень вашей папки проектов и создайте новый проект &amp;lt;code&amp;gt;test-worker&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 wrangler generate test-worker&lt;br /&gt;
 cd test-worker&lt;br /&gt;
 vim wrangler.toml&lt;br /&gt;
&lt;br /&gt;
Откройте https://dash.cloudflare.com/ → &amp;#039;&amp;#039;&amp;#039;Workers&amp;#039;&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;Manage Workers&amp;#039;&amp;#039;&amp;#039; и скопируйте &amp;#039;&amp;#039;&amp;#039;Account ID&amp;#039;&amp;#039;&amp;#039;. Вставьте его во &amp;lt;code&amp;gt;wrangler.toml&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 account_id = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Запустите сервер для локального тестирования:&lt;br /&gt;
&lt;br /&gt;
 wrangler dev&lt;br /&gt;
&lt;br /&gt;
В терминале будет показан локальный URL, по которому можно открыть проект в браузере: http://localhost:8787/&lt;br /&gt;
&lt;br /&gt;
Выполните деплой сайта в Cloudflare Workers:&lt;br /&gt;
&lt;br /&gt;
 wrangler publish&lt;br /&gt;
&lt;br /&gt;
Будет показан URL, по которому сайт можно открыть из интернета, типа: https://test-worker.zina.workers.dev/&lt;br /&gt;
&lt;br /&gt;
== Перенос существующего статичного сайта на Cloudflare Workers ==&lt;br /&gt;
&lt;br /&gt;
* Официальная документация: [https://developers.cloudflare.com/workers/sites/start-from-existing Start from an Existing Site]&lt;br /&gt;
&lt;br /&gt;
Создайте в Cloudflare новый воркер:&lt;br /&gt;
&lt;br /&gt;
https://dash.cloudflare.com/ → &amp;#039;&amp;#039;&amp;#039;Workers&amp;#039;&amp;#039;&amp;#039; → &amp;#039;&amp;#039;&amp;#039;Create a Service&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для имени создаваемого воркера есть ограничения — только латиница, цифры и дефисы.&lt;br /&gt;
&lt;br /&gt;
Перейдите в папку вашего проекта:&lt;br /&gt;
&lt;br /&gt;
 cd project-name.test&lt;br /&gt;
&lt;br /&gt;
Инициализируйте проект Wrangler:&lt;br /&gt;
&lt;br /&gt;
 wrangler init --site worker-name&lt;br /&gt;
&lt;br /&gt;
где &amp;lt;code&amp;gt;worker-name&amp;lt;/code&amp;gt; — имя воркера, созданного на первом шаге.&lt;br /&gt;
&lt;br /&gt;
Будут созданы папка &amp;lt;code&amp;gt;workers-site&amp;lt;/code&amp;gt; и файл &amp;lt;code&amp;gt;wrangler.toml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отредактируйте файл &amp;lt;code&amp;gt;wrangler.toml&amp;lt;/code&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
* добавьте строку &amp;lt;code&amp;gt;account_id = &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;, в кавычки вставьте ID аккаунта, который можно скопируйте в панели https://dash.cloudflare.com/ → выбрать домен → найти в правой колонке &amp;#039;&amp;#039;&amp;#039;Account ID&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* там же скопируйте &amp;#039;&amp;#039;&amp;#039;Zone ID&amp;#039;&amp;#039;&amp;#039; и вставьте его в &amp;lt;code&amp;gt;zone_id = &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* измените параметр &amp;lt;code&amp;gt;bucket&amp;lt;/code&amp;gt; в строке:&amp;lt;pre&amp;gt;site = {bucket = &amp;quot;public&amp;quot;,entry-point = &amp;quot;workers-site&amp;quot;}&amp;lt;/pre&amp;gt;где для Hugo &amp;lt;code&amp;gt;bucket = &amp;quot;public&amp;quot;&amp;lt;/code&amp;gt;, а если файлы сайта лежат прямо в корне проекта, то &amp;lt;code&amp;gt;bucket = &amp;quot;.&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь протестируйте воркер — запустите его локальный сервер:&lt;br /&gt;
&lt;br /&gt;
 wrangler dev&lt;br /&gt;
&lt;br /&gt;
и откройте в браузере http://localhost:8787/&lt;br /&gt;
&lt;br /&gt;
Выложим сайт на тестовый адрес на Cloudflare. Проверьте в файле &amp;lt;code&amp;gt;wrangler.toml&amp;lt;/code&amp;gt; параметр &amp;lt;code&amp;gt;workers_dev&amp;lt;/code&amp;gt; — чтобы тестовый адрес работал, должно быть указано &amp;lt;code&amp;gt;workers_dev = true&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 wrangler publish&lt;br /&gt;
&lt;br /&gt;
Сайт станет доступен на автоматически созданном субдомене &amp;lt;code&amp;gt;https://&amp;lt;worker-name&amp;gt;.&amp;lt;account-name&amp;gt;.worker.dev&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Worker на собственном домене ===&lt;br /&gt;
&lt;br /&gt;
https://dash.cloudflare.com/ → Workers → ваш воркер → Triggers → Add route&lt;br /&gt;
&lt;br /&gt;
Чтобы выложить сайт на собственный домен, нужно добавить route в админке и прописать его в конфиге.&lt;br /&gt;
&lt;br /&gt;
Для примера настроим домен test.zina.dev.&lt;br /&gt;
&lt;br /&gt;
1) https://dash.cloudflare.com/ → &amp;#039;&amp;#039;&amp;#039;DNS&amp;#039;&amp;#039;&amp;#039; → &amp;lt;kbd&amp;gt;+ Add record&amp;lt;/kbd&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Type: &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;&lt;br /&gt;
* Name: &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt;&lt;br /&gt;
* IPv4 address: &amp;lt;code&amp;gt;192.0.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) https://dash.cloudflare.com/ → &amp;#039;&amp;#039;&amp;#039;Workers&amp;#039;&amp;#039;&amp;#039; → &amp;lt;kbd&amp;gt;Add route&amp;lt;/kbd&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Route: &amp;lt;code&amp;gt;test.zina.dev/*&amp;lt;/code&amp;gt;&lt;br /&gt;
* Worker: выбрать наш worker&lt;br /&gt;
&lt;br /&gt;
3) Отредактировать &amp;lt;code&amp;gt;wrangler.toml&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 workers_dev = false&lt;br /&gt;
 route = &amp;quot;test.zina.dev/*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Опубликовать сайт:&lt;br /&gt;
&lt;br /&gt;
 wrangler publish&lt;br /&gt;
&lt;br /&gt;
=== Оптимизация под Google PageSpeed Insight ===&lt;br /&gt;
&lt;br /&gt;
* Источник: https://stackoverflow.com/questions/64254291/cache-control-headers-in-a-cloudflare-workers-site&lt;br /&gt;
&lt;br /&gt;
Чтобы GPSI не ругался на Browser Cache TTL, добавьте &amp;#039;&amp;#039;&amp;#039;browserTTL&amp;#039;&amp;#039;&amp;#039; в файл &amp;lt;code&amp;gt;workers-site/index.js&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
async function handleEvent(event) {&lt;br /&gt;
  const url = new URL(event.request.url)&lt;br /&gt;
  let options = {}&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * You can add custom logic to how we fetch your assets&lt;br /&gt;
   * by configuring the function `mapRequestToAsset`&lt;br /&gt;
   */&lt;br /&gt;
  // options.mapRequestToAsset = handlePrefix(/^\/docs/)&lt;br /&gt;
&lt;br /&gt;
  options.cacheControl = {&lt;br /&gt;
    browserTTL: 31556926      // 1 year&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security Headers ==&lt;br /&gt;
&lt;br /&gt;
* [https://scotthelme.co.uk/security-headers-cloudflare-worker/ The brand new Security Headers Cloudflare Worker]&lt;br /&gt;
* [https://jarv.is/notes/security-headers-cloudflare-workers/ Adding Security Headers Using Cloudflare Workers – Jake Jarvis]&lt;br /&gt;
* https://github.com/securityheaders/security-headers-cloudflare-worker/blob/master/worker.js&lt;br /&gt;
* https://gist.github.com/publicarray/193da174328a7c28ee9d20dff1f0642f&lt;br /&gt;
* https://gitlab.com/snippets/1972599&lt;br /&gt;
* https://github.com/jakejarvis/jarv.is/blob/ededcc05c4a5b2650d5a7eb6f8d00496b61221e3/worker.js&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.cloudflare.com/docs/host-api Cloudflare Hosting Provider API] (возможно, устарело)&lt;br /&gt;
* [https://www.smashingmagazine.com/2019/04/cloudflare-workers-serverless/ Going Serverless With Cloudflare Workers] — Smashing Magazine&lt;br /&gt;
* [https://www.infoq.com/presentations/cloudflare-workers/ Pick Your Region&amp;amp;#58; Earth&amp;amp;#59; Cloudflare Workers]&lt;br /&gt;
* [https://css-tricks.com/how-to-make-a-simple-cms-with-cloudflare-github-actions-and-metalsmith/ How to Make a Simple CMS With Cloudflare, GitHub Actions and Metalsmith] &amp;amp;#124; CSS&amp;amp;#45;Tricks&lt;/div&gt;</summary>
		<author><name>&gt;Zina</name></author>
	</entry>
</feed>