Javascript.RU

Умное Кеширование и Версионность в Javascript/CSS

Подключая внешние CSS и Javascript, мы хотим снизить до минимума лишние HTTP-запросы.

Для этого .js и .css файлы отдаются с заголовками, обеспечивающими надежное кеширование.

Но что делать, когда какой-то из этих файлов меняется в процессе разработки? У всех пользователей в кеше старый вариант - пока кеш не устарел, придет масса жалоб на сломанную интеграцию серверной и клиентской части.

Правильный способ кеширования и версионности полностью избавляет от этой проблемы и обеспечивает надежную, прозрачную синхронизацию версий стиля/скрипта.

Самый простой способ кеширования статических ресурсов - использование ETag.

Достаточно включить соответствующую настройку сервера (для Apache включена по умолчанию) - и к каждому файлу в заголовках будет даваться ETag - хеш, который зависит от времени обновления, размера файла и (на inode-based файловых системах) inode.

Браузер кеширует такой файл и при последующих запросах указывет заголовок If-None-Match с ETag кешированного документа. Получив такой заголовок, сервер может ответить кодом 304 - и тогда документ будет взят из кеша.

Выглядит это так:

Первый запрос к серверу (кеш чистый)
GET /misc/pack.js HTTP/1.1
Host: javascript.ru

Вообще, браузер обычно добавляет еще пачку заголовоков типа User-Agent, Accept и т.п. Для краткости они порезаны.

Ответ сервера
Сервер посылает в ответ документ c кодом 200 и ETag:

HTTP/1.x 200 OK
Content-Encoding: gzip
Content-Type: text/javascript; charset=utf-8
Etag: "3272221997"
Accept-Ranges: bytes
Content-Length: 23321
Date: Fri, 02 May 2008 17:22:46 GMT
Server: lighttpd
Следующий запрос браузера
При следующем запросе браузер добавляет If-None-Match: (кешированный ETag):

GET /misc/pack.js HTTP/1.1
Host: javascript.ru
If-None-Match: "453700005"
Ответ сервера
Сервер смотрит - ага, документ не изменился. Значит можно выдать код 304 и не посылать документ заново.

HTTP/1.x 304 Not Modified
Content-Encoding: gzip
Etag: "453700005"
Content-Type: text/javascript; charset=utf-8
Accept-Ranges: bytes
Date: Tue, 15 Apr 2008 10:17:11 GMT

Альтернативный вариант - если документ изменился, тогда сервер просто посылает 200 с новым ETag.

Аналогичным образом работает связка Last-Modified + If-Modified-Since:

  1. сервер посылает дату последней модификации в заголовке Last-Modified (вместо ETag)
  2. браузер кеширует документ, и при следующем запросе того же документа посылает дату закешированной версии в заголовке If-Modified-Since(вместо If-None-Match)
  3. сервер сверяет даты, и если документ не изменился - высылает только код 304, без содержимого.

Эти способы работают стабильно и хорошо, но браузеру в любом случае приходится делать по запросу для каждого скрипта или стиля.

Общий подход для версионности - в двух словах:

  1. Во все скрипты добавляется версия (или дата модификации). Например, http://javascript.ru/my.js превратится в http://javascript.ru/my.v1.2.js
  2. Все скрипты жестко кешируются браузером
  3. При обновлении скрипта версия меняется на новую: http://javascript.ru/my.v2.0.js
  4. Адрес изменился, поэтому браузер запросит и закеширует файл заново
  5. Старая версия 1.2 постепенно выпадет из кеша

Дальше мы разберем, как сделать этот процесс автоматическим и прозрачным.

Жесткое кеширование - своего рода кувалда которая полностью прибивает запросы к серверу для кешированных документов.

Для этого достаточно добавить заголовки Expires и Cache-Control: max-age.

Например, чтобы закешировать на 365 дней в PHP:

header("Expires: ".gmdate("D, d M Y H:i:s", time()+86400*365)." GMT");
header("Cache-Control: max-age="+86400*365);

Или можно закешировать контент надолго, используя mod_header в Apache:

Header add "Expires" "Mon, 28 Jul 2014 23:30:00 GMT"
Header add "Cache-Control" "max-age=315360000"

Получив такие заголовки, браузер жестко закеширует документ надолго. Все дальнейшие обращения к документу будут напрямую обслуживаться из кеша браузера, без обращения к серверу.

Большинство браузеров (Opera, Internet Explorer 6+, Safari) НЕ кешируют документы, если в адресе есть вопросительный знак, т.к считают их динамическими.

Именно поэтому мы добавляем версию в имя файла. Конечно, с такими адресами приходится использовать решение типа mod_rewrite, мы это рассмотрим дальше в статье.

P.S А вот Firefox кеширует адреса с вопросительными знаками..

Разберем, как автоматически и прозрачно менять версии, не переименовывая при этом сами файлы.

Самое простое - это превратить имя с версией в оригинальное имя файла.

На уровне Apache это можно сделать mod_rewrite:

RewriteEngine on
RewriteRule ^/(.*\.)v[0-9.]+\.(css|js|gif|png|jpg)$	/$1$2	[L]

Такое правило обрабатывает все css/js/gif/png/jpg-файлы, вырезая из имени версию.

Например:

/images/logo.v2.gif -> /images/logo.gif
/css/style.v1.27.css -> /css/style.css
/javascript/script.v6.js -> /javascript/script.js

Но кроме вырезания версии - надо еще добавлять заголовки жесткого кеширования к файлам. Для этого используются директивы mod_header:

Header add "Expires" "Mon, 28 Jul 2014 23:30:00 GMT"
Header add "Cache-Control" "max-age=315360000"

А все вместе реализует вот такой апачевый конфиг:

RewriteEngine on
# убирает версию, и заодно ставит переменную что файл версионный
RewriteRule ^/(.*\.)v[0-9.]+\.(css|js|gif|png|jpg)$ /$1$2 [L,E=VERSIONED_FILE:1]

# жестко кешируем версионные файлы
Header add "Expires" "Mon, 28 Jul 2014 23:30:00 GMT" env=VERSIONED_FILE
Header add "Cache-Control" "max-age=315360000" env=VERSIONED_FILE
Из-за порядка работы модуля mod_rewrite, RewriteRule нужно поставить в основной конфигурационный файл httpd.conf или в подключаемые к нему(include) файлы, но ни в коем случае не в .htaccess, иначе команды Header будут запущены первыми, до того, как установлена переменная VERSIONED_FILE.

Директивы Header могут быть где угодно, даже в .htaccess - без разницы.

Как ставить версию в имя скрипта - зависит от Вашей шаблонной системы и, вообще, способа добавлять скрипты (стили и т.п.).

Например, при использовании даты модификации в качестве версии и шаблонизатора Smarty - ссылки можно ставить так:

<link href="{version src='/css/group.css'}" rel="stylesheet" type="text/css" />

Функция version добавляет версию:

function smarty_version($args){

  $stat = stat($GLOBALS['config']['site_root'].$args['src']);
  $version = $stat['mtime'];

  echo preg_replace('!\.([a-z]+?)$!', ".v$version.\$1", $args['src']);
}

Результат на странице:

<link href="/css/group.v1234567890.css" rel="stylesheet" type="text/css" />

Чтобы избежать лишних вызовов stat, можно хранить массив со списком текущих версий в отдельной переменной

$versions['css'] = array(
  'group.css' => '1.1',
  'other.css' => '3.0',
}

В этом случае в HTML просто подставляется текущая версия из массива.

Можно скрестить оба подхода, и выдавать во время разработки версию по дате модификации - для актуальности, а в продакшн - версию из массива, для производительности.

Такой способ кеширования работает везде, включая Javascript, CSS, изображения, flash-ролики и т.п.

Он полезен всегда, когда документ изменяется, но в браузере всегда должна быть текущая актуальная версия.


Автор: UFABET (не зарегистрирован), дата: 7 июля, 2023 - 19:20
#permalink

New football news every day Report on the progress of the football industry to follow every situation. stick to every event to report to everyone get to know before anyone report news with accuracy that you can trust


Автор: gebrauchtwagen (не зарегистрирован), дата: 20 марта, 2023 - 02:22
#permalink

Overall, Kibla gebrauchtwagen provides a great experience for both buyers and sellers, and it's no wonder that it's becoming so popular in Germany.


Автор: gebrauchtwagen (не зарегистрирован), дата: 20 марта, 2023 - 02:23
#permalink

Overall, Kibla gebrauchtwagen provides a great experience for both buyers and sellers, and it's no wonder that it's becoming so popular in Germany.


Автор: pg-slot.game (не зарегистрирован), дата: 10 апреля, 2023 - 14:24
#permalink

ทางเข้า ซุปเปอร์ สล็อต Super slots เป็นสถานที่ที่ยอดเยี่ยมสำหรับใน การเล่นเกมสล็อต pg slot พวกเขามีโปรโมชั่นแล้วก็โบนัสมากไม่น้อยเลยทีเดียว ที่คุณสามารถใช้เพื่อรับฟรีสปิน


Автор: การเล่น Slotxo 444 (не зарегистрирован), дата: 15 апреля, 2023 - 15:28
#permalink

การเล่น Slotxo 444เป็นเกมสล็อตออนไลน์ที่เปิดให้บริการโดยเว็บไซต์ SLOTXO ซึ่งเป็นเว็บไซต์ชั้นนำในการให้บริการเกมสล็อตอนไลน์ PG เป็นเกมสล็อตที่มีความน่าสนใจและตื่นเต้น


Автор: bmi (не зарегистрирован), дата: 21 апреля, 2023 - 15:00
#permalink

Calculate your body mass index with our easy-to-use BMI Calculator tool.


Автор: Magazin Vesti (не зарегистрирован), дата: 22 апреля, 2023 - 16:25
#permalink

Very nice tutorial thanks for this. Vesti Dana


Автор: Гость (не зарегистрирован), дата: 22 апреля, 2023 - 16:26
#permalink

Good Vesti dana


Автор: Magazin24 Vesti Dana (не зарегистрирован), дата: 22 апреля, 2023 - 16:27
#permalink

Автор: Гость (не зарегистрирован), дата: 27 апреля, 2023 - 11:16
#permalink

Hello exceptional website! Does running a blog similar to this take a large amount of work? I’ve absolutely no knowledge of computer programming however I had been hoping to start my own blog in the near future. https://totonoliteo.com/


Автор: Rencontre liberine Lyon (не зарегистрирован), дата: 7 мая, 2023 - 17:08
#permalink

Continuez sur cette lancée, c'est très bien !


Автор: Michailo (не зарегистрирован), дата: 9 мая, 2023 - 14:08
#permalink

Nice article, this is very awesome content to give us and valuable information to us and valuable content.


Автор: Arthur Sharp (не зарегистрирован), дата: 23 мая, 2023 - 10:50
#permalink

I appreciate you taking soccer random - fantastic two-player game in which players may enjoy many exciting matches as well as realistic ball running, kicking, and going towards the goal.


Автор: Arthur Sharp (не зарегистрирован), дата: 23 мая, 2023 - 10:51
#permalink

I appreciate you taking soccer random - fantastic two-player game in which players may enjoy many exciting matches as well as realistic ball running, kicking, and going towards the goal.


Автор: Arthur Sharp (не зарегистрирован), дата: 23 мая, 2023 - 10:51
#permalink

I appreciate you taking soccer random - fantastic two-player game in which players may enjoy many exciting matches as well as realistic ball running, kicking, and going towards the goal.


Автор: slot (не зарегистрирован), дата: 23 мая, 2023 - 16:51
#permalink

Hey, my friends! Let's join forces and dive into the world of slot gaming with TGA, the unrivaled provider. Together, we can explore their top-tier games and unlock exclusive special promotions.


Автор: slot (не зарегистрирован), дата: 23 мая, 2023 - 16:52
#permalink

Hey pals! Let's join the league of slot gaming enthusiasts and experience the excitement with TGA, the number one new and trending provider. Their special promotions will elevate the fun!


Автор: slot (не зарегистрирован), дата: 23 мая, 2023 - 16:53
#permalink

Attention, my dear friends! Let's gather and embark on an unforgettable slot gaming adventure with TGA, the premier game provider. Together, we can enjoy their top-rated slot and seize the incredible special promotions.


Автор: pg slot เว็บตรง (не зарегистрирован), дата: 24 мая, 2023 - 10:50
#permalink

Very nice post.


Автор: slot (не зарегистрирован), дата: 24 мая, 2023 - 15:50
#permalink

Hey, gaming fanatics! It's time to explore the cutting-edge world of TGA slot games. Get in on the action and enjoy the incredible gameplay and rewards!


Автор: slot (не зарегистрирован), дата: 24 мая, 2023 - 15:50
#permalink

Attention, all slot lovers! Get ready for an adrenaline-pumping adventure with TGA's number one ranked slot games. Join us and let the reels spin you to big wins!


Автор: slot (не зарегистрирован), дата: 24 мая, 2023 - 15:51
#permalink

Hey, friends! Let's dive into the captivating realm of TGA's latest and greatest slot games. Join us now and experience the thrill of winning like never before!


Автор: UFA168 (не зарегистрирован), дата: 5 июня, 2023 - 12:11
#permalink

Hey, have you UFA168 ever considered trying your luck in the exciting world of gambling? It's a thrilling experience that can bring entertainment and the potential for winning into your life.


Автор: SLOTPG (не зарегистрирован), дата: 5 июня, 2023 - 12:13
#permalink

If you're SLOTPG looking for a new and exhilarating way to spend your time, I highly recommend exploring the realm of gambling. It offers a unique blend of excitement and the chance to win big.


Автор: tga bet (не зарегистрирован), дата: 5 июня, 2023 - 12:14
#permalink

Are you tga bet ready to dive into the captivating world of gambling? It's an adventure filled with opportunities to test your luck and potentially reap great rewards. Join the excitement today


Автор: tga bet (не зарегистрирован), дата: 5 июня, 2023 - 12:18
#permalink

Let me tga bet introduce you to the captivating world of gambling. It's a thrilling journey where you can immerse yourself in a variety of games and experience the anticipation of winning with every bet.


Автор: tga bet (не зарегистрирован), дата: 5 июня, 2023 - 12:19
#permalink

Looking to tga bet add some excitement and thrills to your life? Why not give gambling a try? It's a popular activity that offers both entertainment and the chance to win some extra cash."


Автор: Гость (не зарегистрирован), дата: 6 июня, 2023 - 06:26
#permalink

Our selection of free word games includes everything from word search games to word puzzles , so you won't have to look anywhere else. There is no requirement for either downloading or registering!


Автор: Rencontre sexe (не зарегистрирован), дата: 19 июня, 2023 - 23:10
#permalink

C'est le top du top !


Автор: cryptorobotics (не зарегистрирован), дата: 20 июня, 2023 - 02:04
#permalink

What is leverage in cryptocurrency trading?
Leverage is the means of gaining exposure to large amounts of cryptocurrency without having to pay the full value of your trade upfront. Instead, you put down a small deposit, known as margin


Автор: https://tga168.net/ (не зарегистрирован), дата: 23 июня, 2023 - 14:08
#permalink

Let the https://tga168.net/ allure of direct slot gaming on our website beckon you to embark on a journey filled with anticipation and rewards.


Автор: https://TGA168.NET (не зарегистрирован), дата: 23 июня, 2023 - 14:09
#permalink

Experience https://TGA168.NET the pulse-pounding excitement of direct slot gaming on our website as you chase after big wins and thrilling bonuses.


Автор: https://TGA168.BET (не зарегистрирован), дата: 23 июня, 2023 - 14:09
#permalink

Discover https://TGA168.BET the seamless blend of entertainment and rewards with direct slot gaming on our website, where every spin is a chance to win.


Автор: https://TGA-SLOT.COM (не зарегистрирован), дата: 23 июня, 2023 - 14:10
#permalink

Immerse https://TGA-SLOT.COM yourself in a realm of luxury and excitement with direct slot gaming on our website, where opulence meets thrilling gameplay.


Автор: https://tga168.vip/ (не зарегистрирован), дата: 23 июня, 2023 - 14:10
#permalink

Prepare https://tga168.vip/ for a gaming experience like no other as you engage in direct slot gaming on our website, where every spin holds the promise of greatness.


Автор: https://tga168.net/ (не зарегистрирован), дата: 23 июня, 2023 - 14:13
#permalink

Embark https://tga168.net/ on a thrilling quest for fortune and fun with direct slot gaming on our website, where the reels are your guide.


Автор: TGA168.NET (не зарегистрирован), дата: 25 июня, 2023 - 16:05
#permalink

Ready to TGA168.NET experience the thrill of virtual gambling? Gather your buddies and join the excitement of online slots and football betting for an unforgettable gaming session.


Автор: TGA168.BET (не зарегистрирован), дата: 25 июня, 2023 - 16:07
#permalink

Calling all TGA168.BET gaming fanatics! Gather your friends and acquaintances and immerse yourselves in the world of online slots and football betting for endless fun and excitement.


Автор: TGA-BET.COM (не зарегистрирован), дата: 25 июня, 2023 - 16:08
#permalink

Looking for a TGA-BET.COM gaming experience that will keep you hooked? Join your friends in the world of online slots and football betting and let the games ignite your passion.


Автор: TGA-SLOT.COM (не зарегистрирован), дата: 25 июня, 2023 - 16:08
#permalink

Join the virtual TGA-SLOT.COM gaming party with your friends and acquaintances. Explore the world of online slots and football betting for non-stop entertainment.


Автор: tgagame.net (не зарегистрирован), дата: 25 июня, 2023 - 16:09
#permalink

Ready to tgagame.net challenge your luck and test your skills? Gather your crew and join the adventure of online slots and football betting for thrilling wins.


Автор: TGA168.NET (не зарегистрирован), дата: 29 июня, 2023 - 13:16
#permalink

Seeking tga slot unbeatable entertainment and thrilling gameplay? Look no further! Join our online slots and football betting community and let the excitement take over.


Автор: TGA168.BET (не зарегистрирован), дата: 29 июня, 2023 - 13:17
#permalink

Calling all tgabet gaming enthusiasts! Get ready to immerse yourself in the world of online slots and live football betting. Join us and let the adventure begin


Автор: TGA-BET.COM (не зарегистрирован), дата: 29 июня, 2023 - 13:17
#permalink

Ready to สล็อต ฝาก-ถอน true wallet ไม่มี บัญชีธนาคาร 777 unlock the secrets of online slots and football betting? Join our community and let's discover a world filled with fun, strategy, and endless winning possibilities.


Автор: TGA-SLOT.COM (не зарегистрирован), дата: 29 июня, 2023 - 13:18
#permalink

Join the tga168.vip league of gaming enthusiasts! Immerse yourself in the world of slots and football betting. Let's gather, play, and revel in the joy of gaming together!


Автор: TGA-SLOT.COM (не зарегистрирован), дата: 29 июня, 2023 - 13:19
#permalink

Seeking สล็อตฝากถอนไม่มีขั้นต่ำ unparalleled entertainment and incredible rewards? Look no further! Join our online slots and football betting community and let's celebrate the joy of winning


Автор: TGA168.NET (не зарегистрирован), дата: 30 июня, 2023 - 20:03
#permalink

Attention, tga slot gaming buddies! Immerse yourself in the world of online slots and live football in English. These 30 concise and informative sentences will help you navigate the subject effortlessly.


Автор: TGA168.BET (не зарегистрирован), дата: 30 июня, 2023 - 20:04
#permalink

Hey there, tgabet gaming enthusiasts! Experience the excitement of online slots and live football in English. These 30 new and easily understandable sentences will enhance your understanding of the topic.


Автор: TGA-BET.COM (не зарегистрирован), дата: 30 июня, 2023 - 20:05
#permalink

Attention, friends สล็อต ฝาก-ถอน true wallet ไม่มี บัญชีธนาคาร 777 and acquaintances! Embark on an English gaming adventure with online slots and live football. These 30 concise and engaging sentences will keep you captivated and informed.


Автор: TGA-SLOT.COM (не зарегистрирован), дата: 30 июня, 2023 - 20:06
#permalink

Ready to level up สล็อตฝากถอนไม่มีขั้นต่ำ your gaming skills in English? Join us in the world of online slots and live football. These 30 concise and insightful sentences will deepen your understanding and keep you engaged.


Автор: tga168.vip (не зарегистрирован), дата: 30 июня, 2023 - 20:07
#permalink

Seeking an tga168.vip immersive English gaming experience? Look no further! Join us in playing online slots and exploring live football. These 30 concise and easily comprehensible sentences will enhance your enjoyment.


Автор: Гость (не зарегистрирован), дата: 2 июля, 2023 - 17:25
#permalink

Автор: tga168.net (не зарегистрирован), дата: 7 июля, 2023 - 16:57
#permalink

Seeking the tga168.net thrill of victory? Look no further! Join us in the world of online slots and live football betting, where every spin and every goal brings us closer to the taste of success. Let's spin, bet, and conquer the gaming realm together."


Автор: ufa365 (не зарегистрирован), дата: 7 июля, 2023 - 16:58
#permalink

Calling all ufa365 gaming aficionados! Gather your friends and let's embark on a gaming odyssey with online slots and live football betting. Let's spin the reels, place bets, and celebrate the joy of gaming camaraderie.


Автор: tga-bet.com (не зарегистрирован), дата: 7 июля, 2023 - 16:58
#permalink

Hey, tga-bet.com gaming enthusiasts! Get ready to immerse yourselves in the world of online slots and live football betting. Join us as we spin the reels, place strategic bets, and celebrate the joy of gaming victories together.


Автор: tga สล็อตเว็บตรง (не зарегистрирован), дата: 7 июля, 2023 - 16:59
#permalink

Looking for a tga สล็อตเว็บตรง gaming revolution? Join us in the world of online slots and live football betting, where the rules are meant to be rewritten. Let's spin, bet, and redefine the gaming experience together.


Автор: ambbets.cc (не зарегистрирован), дата: 7 июля, 2023 - 17:00
#permalink

Attention, ambbets.cc gaming addicts! Brace yourselves for an immersive gaming experience with online slots and live football betting. Join us as we spin the reels, place bets, and celebrate the joy of gaming camaraderie.


Автор: ufa365 ทางเข้า (не зарегистрирован), дата: 18 июля, 2023 - 10:07
#permalink

Don't ufa365 ทางเข้า
miss out on the excitement! Invite your friends and siblings to play online slot football together – it's an opportunity for endless fun.


Автор: รวมเว็บสล็อต ฝาก-ถอน true wallet (не зарегистрирован), дата: 18 июля, 2023 - 10:08
#permalink

Challenge รวมเว็บสล็อต ฝาก-ถอน true wallet your friends and siblings to an online slot football match – it's an invitation to test your skills and enjoy friendly competition.


Автор: สล็อตเว็บตรงไม่ผ่านเอเย่นต์ ไม่มี ขั้นต่ำ 168 (не зарегистрирован), дата: 18 июля, 2023 - 10:09
#permalink

Experience สล็อตเว็บตรงไม่ผ่านเอเย่นต์ ไม่มี ขั้นต่ำ 168
the dynamic blend of slots and football in the online realm – invite your friends and siblings for an electrifying gaming session.


Автор: ฝาก10 รับ 100 วอ เลท ล่าสุด 2566 (не зарегистрирован), дата: 18 июля, 2023 - 10:10
#permalink

Unite with ฝาก10 รับ 100 วอ เลท ล่าสุด 2566 your friends and siblings in the virtual world of online slot football – it's an invitation to enjoy thrilling gameplay and camaraderie.


Автор: สล็อตเครดิตฟรี.com (не зарегистрирован), дата: 19 июля, 2023 - 15:32
#permalink

Join us for an สล็อตเครดิตฟรี.com exhilarating online slots and football betting experience and invite your friends and siblings to join the action.


Автор: สล็อต ฝากถอน true wallet เว็บตรง 888pg (не зарегистрирован), дата: 20 июля, 2023 - 11:14
#permalink

Join us as we สล็อต ฝากถอน true wallet เว็บตรง 888pg celebrate the spirit of gaming – invite your buddies and siblings to play slots and football together.


Автор: สล็อต pg เว็บตรงแตกหนักวอเลท (не зарегистрирован), дата: 21 июля, 2023 - 13:40
#permalink

Share the สล็อต pg เว็บตรงแตกหนักวอเลท joy of online slot games and football matches with your friends and siblings – it's the ultimate invitation for enjoyment.


Автор: jokergame (не зарегистрирован), дата: 23 июля, 2023 - 19:27
#permalink

jokergame pg-slot เว็บที่แจกการสูตรการทำเงินของ Jokergame อย่ารอช้าหากไม่รีบระวัง ชวดรางวัลใหญ่ไปง่ายๆเลยนะ PG พร้อมแล้วก็มาเลย


Автор: jokergame (не зарегистрирован), дата: 23 июля, 2023 - 19:27
#permalink

jokergame pg-slot เว็บที่แจกการสูตรการทำเงินของ Jokergame อย่ารอช้าหากไม่รีบระวัง ชวดรางวัลใหญ่ไปง่ายๆเลยนะ PG พร้อมแล้วก็มาเลย


Автор: 카지노 (не зарегистрирован), дата: 27 июля, 2023 - 08:44
#permalink

hi. Cool post. There’s an difficulty with your site in chrome, and you may want to check this… the browser is the market leader and a very good detail of people will omit your notable writing due to this problem. Very thrilling topic, thanks for posting. “the deepest american dream is not the hunger for cash or repute it is the dream of settling down, in peace and freedom and cooperation, inside the promised land.” by scott russell sanders.. Your website is genuinely cool and that is a splendid inspiring article.
카지노


Автор: 토토안전나라 (не зарегистрирован), дата: 27 июля, 2023 - 08:56
#permalink

this novel blog is probably cool and educational. I've found many exciting advices out of this supply. I advertising love to return again soon. Plenty favored ! You ave made a few legitimate statements there. I saved a watch on the net for extra statistics approximately the issue and determined the great majority will oblige your views in this web page. This particular blog is sort of really engaging moreover beneficial. I've picked a whole lot of beneficial things out of this blog. I advertisement love to visit it over and over. You rock! Only wanna say that this is useful , thank you for taking as much time as important to compose this.
토토안전나라


Автор: 먹튀365 먹튀검증사이트 (не зарегистрирован), дата: 27 июля, 2023 - 13:31
#permalink

thanks due to the fact you have been inclined to percentage information with us. We can constantly respect all you have got completed here because i understand you're very worried with our . I really like your post. It is right to look you verbalize from the coronary heart and readability on this important concern can be effortlessly found.. I examine a whole lot of stuff and i discovered that the manner of writing to clearifing that exactly need to say became superb so i'm impressed and ilike to come again in destiny.. Very beneficial put up. That is my first time i visit right here. I found so many interesting stuff on your blog in particular its dialogue. Surely its high-quality article. Hold it up. Thank you for the terrific proportion. Your article has proved your difficult paintings and experience you've got got in this area. Wonderful . I really like it studying. Thank you due to the fact you've got been inclined to percentage records with us. We can continually respect all you have got performed right here due to the fact i realize you're very involved with our. I'm so thrilled i placed your blog, i virtually placed you with the aid of mistake, while i used to be looking on google for some thing else, anyways i am here now and will much like to say thank for a fantastic post and a all spherical entertaining website. Please do preserve up the extraordinary work. I just stumbled upon your weblog and wanted to mention that i've really loved analyzing your weblog posts. Any manner i will be subscribing in your feed and i wish you post again quickly. Fine web page, where did u come up with the records on this posting? I've examine most of the articles on your website now, and i really like your fashion. Thank you a million and please keep up the effective paintings. That is this sort of excellent useful resource which you are offering and you provide it away totally free. I really like seeing blog that understand the fee of presenting a excellent resource at no cost. Was studying a number of your content material on this website and that i conceive this net web page is simply informative ! Preserve on putting up. What a fantabulous publish this has been. By no means seen this kind of useful submit. I am thankful to you and expect more wide variety of posts like those. Thank you very plenty. i've truly enjoyed studying your weblog posts. Any way i'll be subscribing to your feed and that i wish you put up again quickly. Huge thank you for the beneficial info. What a brilliant post i have come upon and consider me i have been seeking out for this similar kind of put up for past every week and infrequently came throughout this. Thanks very a whole lot and could look for greater postings from you. Thank you for taking the time to submit such precious information. I lately came across your article and have been analyzing alongside. I need to specific my admiration of your writing talent and capability to make readers study from the beginning to the cease. I would love to study newer posts and to proportion my thoughts with you. You've got a actual potential for writing unique content material. I love how you watched and the manner you represent your perspectives in this newsletter. I accept as true with your way of wondering. Thanks for sharing. I've been waited for see you later. I will want this submit to general my venture within the university, and it has exact identical topic together with your write-up. Thanks, right share .
먹튀365 먹튀검증사이트


Автор: brown leather jacket mens (не зарегистрирован), дата: 19 августа, 2023 - 14:09
#permalink

Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking
brown leather jacket mens


Автор: Jacket Hunt (не зарегистрирован), дата: 28 августа, 2023 - 09:26
#permalink

Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking
men brown leather jacket


Автор: Гость (не зарегистрирован), дата: 10 сентября, 2023 - 09:42
#permalink

hello!! Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net community.n
https://parikshapaper.com/


Автор: Tujg (не зарегистрирован), дата: 10 сентября, 2023 - 09:44
#permalink

hello!! Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net community.n
https://parikshapaper.com/


Автор: Tujg (не зарегистрирован), дата: 10 сентября, 2023 - 09:46
#permalink

Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net commu https://parikshapaper.com/


Автор: Рахул (не зарегистрирован), дата: 12 сентября, 2023 - 05:18
#permalink

To learn JavaScript well, just keep coding on your computer, work on small projects, and use online tutorials and courses to help you. It's like practicing and learning from videos online.


Автор: Гостb (не зарегистрирован), дата: 17 сентября, 2023 - 14:35
#permalink

En.jankari web is a portal website powered by the Blogger of JavaScript and CSS programming languages.


Автор: lavapg (не зарегистрирован), дата: 18 сентября, 2023 - 17:53
#permalink

Is a very good post. lavapg


Автор: 지투지 (не зарегистрирован), дата: 20 сентября, 2023 - 10:47
#permalink

Автор: betflixsupervip (не зарегистрирован), дата: 29 сентября, 2023 - 00:46
#permalink

betflik vip กติกา บาคาร่า และวิธีเล่นเกมไพ่ยอดนิยม เข้าใจง่าย ทำเงินดีที่สุด


Автор: Tokkio (не зарегистрирован), дата: 30 сентября, 2023 - 16:34
#permalink

Автор: Гость (не зарегистрирован), дата: 16 октября, 2023 - 22:57
#permalink

สล็อต Fenix168สล็อตเว็บไซต์ตรง เว็บไซต์พนันออนไลน์ที่ยอดเยี่ยม พร้อมให้ท่านได้เข้าเล่นเกมสล็อตออนไลน์ที่ตอบปัญหากับนักพนัน PG SLOT ที่คุณนั้นสามารถเข้ามาสัมผัสกับความสนุกสนานร่าเริง


Автор: 犀利士官網 (не зарегистрирован), дата: 26 октября, 2023 - 06:00
#permalink

Автор: SDFSDFSD (не зарегистрирован), дата: 26 октября, 2023 - 06:15
#permalink

SDF SDF SDF SD FSDF


Автор: sdsdgas (не зарегистрирован), дата: 11 декабря, 2023 - 12:00
#permalink

In a world where technology is constantly advancing, eBooks have become an increasingly popular way for book lovers to enjoy their favorite stories. 威而鋼


Автор: Гость (не зарегистрирован), дата: 11 декабря, 2023 - 12:01
#permalink

In this post, we'll explore everything you need to know about eBooks and Z Library in 2023, so buckle up and get ready for an exciting journey into the future of reading! 威而鋼


Автор: James Song (не зарегистрирован), дата: 14 декабря, 2023 - 00:20
#permalink

Thats what I was looking for! air conditioning repair adelaide


Автор: James Song (не зарегистрирован), дата: 14 декабря, 2023 - 00:24
#permalink

Actually, it's pretty good to see! Tiler Adelaide


Автор: timothyferriss (не зарегистрирован), дата: 14 декабря, 2023 - 05:09
#permalink

The retro bowl is the ideal contest for the couch quarterback to make their case. The game, which is presented in a gorgeous retro aesthetic, offers straightforward roster management, including press responsibilities and the handling of fragile egos, while you get to make decisions on the field.


Автор: Autobazar (не зарегистрирован), дата: 14 декабря, 2023 - 21:35
#permalink

As i see from my angle this is have to be some informational javascript oase and thanks for that.


Автор: Autobazar (не зарегистрирован), дата: 14 декабря, 2023 - 21:39
#permalink

Is there any javascript manual to download here? Polovni automobili


Автор: Autobazar eu (не зарегистрирован), дата: 2 января, 2024 - 00:31
#permalink

Nice article about JS. autobazar eu


Автор: Гость (не зарегистрирован), дата: 2 января, 2024 - 00:32
#permalink

Автор: CaroleP Charles (не зарегистрирован), дата: 3 января, 2024 - 21:11
#permalink

Puravive takes efficiency to a whole new level, targeting bad fat while preserving the essential brown fat. The result? Your desired physique without compromising your health. In the ever-evolving supplement industry, Puravive has emerged as a beacon of reliability and effectiveness.


Автор: สล็อตpg 2023 (не зарегистрирован), дата: 7 января, 2024 - 20:28
#permalink

สล็อต pg ใหม่ ล่าสุด 2023 อัพเดทเกมไวก่อนใครทดลองเล่นสล็อต สล็อตpg 2023 ใหม่ รวดเร็วทันใจ เรียกได้ว่าอัพเดทกันแบบเรียงไทม์ ค่ายเกม ลงเกมหมดปุ๊บ ก็สามารถเข้ามา ทดลองเล่นสล็อต pg ใหม่ กับเราได้ทันที เพราะเราเป็นพาร์ทเนอร์ กับหลายๆค่าย


Автор: Гость (не зарегистрирован), дата: 7 января, 2024 - 20:28
#permalink

เล่นเว็บใหญ่ทำให้สามารถนำเกมใหม่มาลงให้คุณ https://pgslot-game.app/ ได้เล่นก่อนใคร เพียงแค่คุณคลิกเข้าเว็บเราในหน้า ทดลองเล่นสล็อต ก็สามารถที่จะคลิก เพื่อเล่นเกมได้เลยก่อนใคร ไม่จำเป็นจะต้องสมัครสมาชิก ให้ยุ่งยาก ก็สามารถเข้ามาเล่นสล็อต ได้แบบฟรีๆ พร้อมเครดิตฟรี ให้คุณได้หมุนกันแบบจุใจ และมีแจกใหม่เรื่อยๆ


Автор: ทดลองเล่นสล็อต (не зарегистрирован), дата: 7 января, 2024 - 20:29
#permalink

เว็บเล่นเกมออนไลน์ของเรา เรียกได้ว่ารวดเร็วทันใจ ไม่มีอารมณ์เสียอย่างแน่นอน ทดลองเล่นสล็อต สล็อตทดลองเล่น เล่นฟรีไม่มีกั๊ก พร้อมอัพเดทเกมใหม่ล่าสุดรับปี 2023


Автор: martin jake (не зарегистрирован), дата: 28 марта, 2024 - 08:25
#permalink

Thank you for your kind words! If you have any more questions or if there's anything else I can assist you with, feel free to reach out anytime. I'm here to help!

Event staffing services in New York City play a crucial role in ensuring the success of various events, ranging from corporate functions to social gatherings. These services provide trained and experienced staff members who are essential for creating the desired atmosphere and ensuring smooth event operations.Event Staffing Agency Nyc


Автор: https://slot88.uk/ (не зарегистрирован), дата: 8 апреля, 2024 - 10:20
#permalink

เว็บสล็อตยอดนิยมที่สุดในขณะนี้ https://slot88.uk/ ทางเข้าใหม่ล่าสุด


Автор: ทดลองเล่นสล็อตทุกค่าย ไม่ต้องสมัคร (не зарегистрирован), дата: 8 апреля, 2024 - 10:24
#permalink

เกมสล็อตใหม่ล่าสุด ทดลองเล่นสล็อตทุกค่าย ไม่ต้องสมัคร แจกเครดิตฟรีเพียบ


Автор: tattoo house (не зарегистрирован), дата: 8 апреля, 2024 - 10:26
#permalink

The best tattoo house in Phuket, Our greatest reward is to leave you feeling proud with your new work.


Автор: เตรียมตัวก่อนสัก (не зарегистрирован), дата: 8 апреля, 2024 - 10:27
#permalink

ร้านสักที่ดีที่สุดในภูเก็ต เตรียมตัวก่อนสัก ทำยังไง การดูแลตัวเองก่อนสักควรทำอะไร วันนี้เรามีคำตอบ พร้อมกับช่างสักที่ได้รับรางวัลเด่นๆมากมาย รอให้คุณเข้าไปปรึกษา


Автор: เตรียมตัวก่อนสัก (не зарегистрирован), дата: 8 апреля, 2024 - 10:27
#permalink

ร้านสักที่ดีที่สุดในภูเก็ต เตรียมตัวก่อนสัก ทำยังไง การดูแลตัวเองก่อนสักควรทำอะไร วันนี้เรามีคำตอบ พร้อมกับช่างสักที่ได้รับรางวัลเด่นๆมากมาย รอให้คุณเข้าไปปรึกษา


Автор: ร้านสักภูเก็ต (не зарегистрирован), дата: 8 апреля, 2024 - 10:29
#permalink

ร้านสักที่เต็มไปด้วยคุณภาพ ช่างสักมากด้วยประสบการณ์ต้องที่ ร้านสักภูเก็ต ปรึกษาฟรี!


Автор: Aphrodite Richmond (не зарегистрирован), дата: 20 апреля, 2024 - 22:08
#permalink

The characters in game were likened to the famous basketball players Lebron James, Derrick Williams and Stephen Curry. This game has become much more exciting. Start the game with one of these legendary players

<a href='https://basketballlegends.club'>basketball legends club</a>

and enjoy playing at the NBA.


Автор: sanne (не зарегистрирован), дата: 7 мая, 2024 - 23:31
#permalink

Hey there, wanna see more of me? I'm live and ready to play on 1 on 1 sex cams Come check out my private shows and let's have some fun together. I promise it'll be worth your while


Автор: sannelol (не зарегистрирован), дата: 7 мая, 2024 - 23:32
#permalink

Hey there, want to see more of me? I'm live and ready to play on 1 on 1 sex cams Come check out my private shows and let's have some fun together. I promise it'll be worth your while


Автор: ufaauto789 (не зарегистрирован), дата: 11 мая, 2024 - 16:19
#permalink

เว็บสล็อตเว็บตรง เว็บแทงบอลราคาดี มีคู่บอลเปิดให้แทงมากที่สุด บาคาร่า อันดับ1 ศูนย์รวมเกมพนันทุกเกม สมัครง่าย ไม่มีขั้นต่ำ


Автор: 6annonce alternative (не зарегистрирован), дата: 18 мая, 2024 - 11:35
#permalink

Fine French ladies waiting for casual contacts with you 6annonce alternative


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
10 + 9 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum