User Tools

Site Tools


Writing /home/user/smartcj.com/wiki/data/cache/c/cb4f68b7c5486fae5ce81c790071ac88.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/user/smartcj.com/wiki/data/cache/c/cb4f68b7c5486fae5ce81c790071ac88.metadata failed
ru:faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ru:faq [2025/12/17 18:31] – ["Прокладка" для out.php] adminru:faq [2026/06/22 17:23] (current) – [How to test script] admin
Line 709: Line 709:
   
  
 +====== How to count with JS ======
  
 +Для обратной совместимости, в целом как мне кажется не имеет смысла.
 +
 +Если вы хотите считать только ины то можно поставить JS счетчик следующим кодом:
 +
 +<code>
 +<script
 +  src="http://your_domain/scj/cgi/pixel.js"
 +  data-endpoint="http://your_domain/scj/cgi/include.php"
 +></script>
 +</code>
 ====== Server Load ====== ====== Server Load ======
  
Line 789: Line 800:
  
  
-Из всего этого следует сакратльный вопрос: **сколько сайтов потянет сервер такой-то ... ?** Это вопрос из разряда “сколько коробочек влезет в машину?” это на 100% зависит от веса коробочек, их размера и желания максимально оптимально их там распихивать. +Из всего этого следует вопрос: **сколько сайтов потянет сервер такой-то ... ?** Это вопрос из разряда “сколько коробочек влезет в машину?” это на 100% зависит от веса коробочек, их размера и желания максимально оптимально их там распихивать.  
 + 
 + 
 +====== How cache works ====== 
 + 
 +Как работает кеширование в интернет 
 + 
 +<code> 
 + 
 ++------------------+ 
 +|  Пользователь   | 
 ++------------------+ 
 +         | 
 +         v 
 ++------------------+ 
 +|     Браузер     | 
 ++------------------+ 
 +         | 
 +           
 +         v 
 ++----------------------------------+ 
 +|        Кэш браузера              | если тут закеширвоать страницу то ни сервер  
 ++----------------------------------+ ни скрипт никогда не узнают что  
 +                                   пользователь открывал URL   
 +         v 
 ++----------------------------------+ 
 +|        CDN                       | Аналогично и тут, запрос еще не дошел до сервера 
 ++----------------------------------+ 
 +         | 
 +           
 +         v 
 ++----------------------------------+ 
 +|     Веб-сервер                   | 
 +|   (Apache / Nginx)                 Веб-сервер может закешировать страницу полностью  
 ++----------------------------------+   и скрипт не узнает что было  обращение к странице 
 +                \ 
 +                 \ обращение 
 +                  v 
 +           +--------------------+ 
 +            Серверный кэш     | 
 +           | (файлы / Redis)   | 
 +           +--------------------+ 
 +         | 
 +           
 +         v 
 ++----------------------------------+ 
 +|     Скрипт / Приложение          |  тут скрипт уже знает что было обращение  
 ++----------------------------------+ 
 +                \ 
 +                 \ обращение 
 +                  v 
 +           +--------------------+ 
 +             Кэш данных       | 
 +           | Redis \ memcache   | 
 +           +--------------------+ 
 +         | 
 +         v 
 ++------------------+ 
 +|   База данных    | 
 ++------------------+ 
 + 
 + 
 +</code> 
 + 
 + 
 +**Как браузер получает страницу и где в интернете появляется кэш** 
 + 
 +Когда пользователь вводит адрес сайта в браузере, кажется, что браузер «просто идёт на сервер и получает страницу». 
 +На самом деле браузер старается не ходить на сервер, если это возможно. 
 + 
 +Вся система интернета устроена так, чтобы: 
 + 
 +  * получить ответ как можно быстрее 
 +  * пройти как можно меньшее расстояние 
 +  * задействовать как можно меньше серверов 
 + 
 +Для этого используются кэши. 
 + 
 + 
 +**Шаг 1. Браузер и кэш браузера** 
 + 
 +После ввода адреса браузер сначала проверяет: «А у меня уже есть эта страница?» 
 + 
 +Браузер может хранить: 
 + 
 +  * готовую HTML-страницу 
 +  * стили 
 +  * JS скрипты 
 +  * изображения 
 + 
 +Если нужные данные уже есть в кэше браузера: 
 + 
 +  * никакого запроса в интернет не происходит 
 +  * сервер вообще ничего не узнаёт о пользователе 
 +  * страница открывается мгновенно 
 + 
 +Это самый быстрый вариант. 
 + 
 +**Шаг 2. DNS — поиск адреса сервера** 
 + 
 +Если браузеру всё-таки нужно идти в интернет, сначала он должен понять: 
 + 
 +«Куда идти?» 
 + 
 +Для этого используется DNS. DNS переводит имя сайта в IP-адрес 
 + 
 +**Шаг 3. CDN — сервер ближе к пользователю** 
 + 
 +После DNS запрос идёт не обязательно сразу на основной сервер сайта. 
 + 
 +Между браузером и сервером может находиться CDN — сеть серверов в разных странах. 
 + 
 +Пример: основной сервер находится в Европе, пользователь — в Южной Америке 
 + 
 +Если всегда обращаться в Европу: 
 + 
 +  * сигналу нужно пройти большое расстояние 
 +  * страница будет загружаться медленно 
 + 
 +CDN работает так: 
 + 
 +  * первый запрос идёт на основной сервер 
 +  * ответ сохраняется на сервере CDN ближе к пользователю 
 +  * следующие пользователи получают страницу быстрее 
 + 
 +CDN удобно использовать для контента, который не меняется на каждый запрос 
 + 
 +    * если CDN отдаёт ответ из кэша, запрос не доходит до основного сервера 
 +    * скрипт ничего не узнаёт о пользователе 
 + 
 +**Шаг 4. Веб-сервер (Apache / Nginx)** 
 + 
 +Если CDN не смог отдать страницу, запрос приходит на веб-сервер. Веб-сервер — это программа, которая принимает HTTP-запросы. 
 + 
 +У веб-сервера есть выбор: 
 + 
 +  * отдать готовую страницу (если он откуда то знает что надо отдать) 
 +  * передать запрос дальше в скрипт 
 + 
 +Если у веб-сервера есть готовый ответ: 
 + 
 +  * он сразу возвращает страницу 
 +  * скрипт не запускается 
 +  * скрипт не знает, что был запрос 
 +  * Apache может передать запрос скрипту 1 раз и закешировать ответ  
 + 
 +Важный момент: что такое серверный кэш. Серверный кэш — это не часть веб-сервера и не часть скрипта. 
 + 
 +Это: 
 + 
 +  * отдельное хранилище 
 +  * файлы, память или Redis 
 +  * грубо это как отдельная коробка в которую могут складывать данные кто угодно кто работает на сервере 
 + 
 + 
 +Еще раз для понимания. В серверный кеш могут писать: 
 + 
 +  * веб-сервер 
 +  * скрипт 
 +  * оба одновременно 
 + 
 + 
 +Шаг 5. Скрипт (приложение) 
 + 
 +Если запрос дошёл до скрипта: 
 + 
 +  * скрипт точно знает, что был пользователь 
 +  * может записать статистику 
 +  * может принять решения сформировать страницу снова или отдать из кеша  
 + 
 + 
 +**Скрипт формирует страницу из данных.** 
 + 
 +Важно: кэшироваться может не только вся страница, но и отдельные данные. 
 + 
 +**Пример:** 
 + 
 +  * название сайта хранится в базе и почти не меняется 
 +  * текущая дата должна быть новой каждый раз 
 + 
 + 
 +Тогда: название сайта можно взять из базы 1 раз и сохранить в кеше, а дата формируется заново каждый раз  
 + 
 +Те закеширована не вся страница, а только определенные данные из которых сформирована страница. те HTML создаётся каждый запрос, запросы есть, но нагрузка на базу данных почти отсутствует 
 + 
 +**Шаг 6. База данных** 
 + 
 +Если данных нет ни в каком кэше: 
 + 
 +  * скрипт обращается к базе 
 +  * база читает данные (тут варианты - если хватает памяти Mysql держит данные в памяти, если не хватает - читает с диска) 
 +  * страница полностью формируется заново 
 + 
 + 
 + 
 +**Что из этого всего надо понять** 
 + 
 +  * если запрос не дошел до скрипта - скрипт про него просто не узнает  
 +  * page cache, Redis, memcache, серверный кеш и еще куча слов - это не важно, это просто название "коробочек" куда складываются данные. Важно только в каком пункте и что именно вы кешируете
  
  
 +**Как используется память под кеш**
  
 +  * базово данные хранятся в файлах 
 +  * база данных (mysql) может данные держать в памяти если хватает памяти и достаточно выделено в конфиге mysql 
 +  * redis (и любой другой кеш) так же как и база стараются хранить данные в памяти но если не хватает - скидывает в файл
  
ru/faq.1765996311.txt.gz · Last modified: by admin