- 4 Кэширование php на основе неразделяемых ресурсов
- 6 Кэширование mysql на основе query cache
- 5 Кэширование php на основе общих ресурсов
- 1 очистите кеш браузера
- Openssl
- Браузерное кэширование или клиентское кэширование
- 1 Кэширование файлов и картинок
- 3 Кэширование центра сертификации
- 4 Кэширование страниц
- 2 попробуйте средство устранения неполадок сети
- Squid
- Серверное кэширование
- 1 Кэширование страницы целиком
- 2 Кэширование результатов компиляции php-файлов
- 3 Кэширование отдельных блоков страницы
- 7 Кэширование mysql результатов работы, агрегирующие таблицы
- 3 очистите кеш сертификатов ssl
- Генерируем self-signed сертификат
- 4 проверьте, не был ли изменен файл hosts
- Настраиваем squid
- 5 отключите прокси-серверы
- 6 перезагрузите модем/маршрутизатор
- Виды кэширования
- Кеш google chrome на ssl?
- Заключение
4 Кэширование php на основе неразделяемых ресурсов
Лучше всего подходит при стандартизации запросов, получении данных из общих ресурсов, наличии внутренних переменных, к которым php-ресурсы обращаются несколько раз при генерации страницы.
6 Кэширование mysql на основе query cache
Это довольно известная и наиболее освещённая тема. Тем не менее, хотелось бы рассмотреть специфику работы с timestamp и то, как можно избежать постоянного сброса query cache.
Наверняка, вы регулярно сталкивались с ситуацией, когда необходимо отдать новые материалы, дата публикации которых уже разрешена текущим timestamp? Проще говоря,
WHERE show_ts<=UNIX_TIMESTAMP()
Если использовать постоянно меняющийся timestamp в таких запросах, то sql кэш будет не только бесполезен, но даже вреден, так как будет копиться количество кэшированных запросов, данные которых устарели в момент создания кэша.
Мы предлагаем следующий выход из ситуации:
Как правило, любой материал публикуется в определенные моменты времени. К примеру, 00:00. Всё что нужно сделать — создать запрос, который будет оценивать таблицу по максимальной дате, при этом, меньшей текущей.
Что-то вроде:
SELECT SQL_NO_CACHE MAX(show_ts) … WHERE show_ts<=UNIX_TIMESTAMP();
Да, этот запрос кэшироваться не будет, но будут кэшироваться все запросы к этой таблице, если их количество больше одного. Эта простая операция существенно улучшит жизнь sql-кэширования.
Кэшировать эти запросы имеет смысл, если чтений из таблицы немного больше чем записи.
5 Кэширование php на основе общих ресурсов
Такое кэширование применяйте для хранения сериализированных данных. Например: конфигурационного файла, состояния таблиц, списков файловой системы.
1 очистите кеш браузера
Начните с очистки кеша браузера, чтобы исключить возможность возникновения ERR_SSL_PROTOCOL_ERROR из-за кешированной страницы с ошибкой.
Действия по очистке кеша браузера зависят от того, какой веб-браузер (Chrome, Opera, Firefox или Edge) установлен у вас.
Если вы используете браузер Chrome, щелкните значок меню с тремя точками > наведите указатель мыши на Дополнительные инструменты и выберите Удаление данных о просмотренных страницах в боковом меню.
На следующем экране нажмите кнопку Удалить данные.
Openssl
Итак, для начала нам надо собрать свой openssl. Тут всё довольно просто и никакой магии:
wget www.openssl.org/source/openssl-1.0.0k.tar.gztar -zxf openssl-1.0.0k.tar.gzcd openssl-1.0.0k
Что бы не было конфликтов с уже установленной версией openssl, указываем новый путь:
./config shared –prefix=/opt/squid/openssl –openssldir=/opt/squid/opensslmakemake installВсё, openssl собран и готов к использованию.
Браузерное кэширование или клиентское кэширование
Представляет собой составление для браузера команды использовать имеющуюся кэшированную копию. Работа такого кэширования основана на том, что при повторном посещении, браузеру отдаётся заголовок 304 Not Modified, а сама страница или картинка загружаются из локального пользовательского кэша.
1 Кэширование файлов и картинок
Браузерное кэширование как нельзя лучше подходит для сайтов, содержащих большое количество изображений: картинка не скачивается каждый раз при открытии сайта, а просто загружается через кэш браузера.
Это первый уровень кэширования, который состоит в отдаче заголовка
«expired»
и заголовка
«304 Not Modified»
. Наиболее эффективным считается кэширование на 2 недели.
Однако в данном случае есть важный нюанс: если изображение на сайте меняется, то браузер узнает об этом не сразу, а только если выждать expiry или сбросить кэш в самом браузере. Это не очень эффективно, если файл постоянно изменяется и необходимо постоянно отдавать его актуальную версию.
3 Кэширование центра сертификации
Так называемый, stamp центра сертификации.
Данный вид кэширования считается обязательным для применения, если вы не хотите, чтобы пользователи вашего сайта ждали, когда центр сертификации (а это некий сервер, который отвечает за достоверность вашего сертификата) обработает запрос от браузера пользователя и подтвердит, что ваш сайт действительно подтверждён им.
4 Кэширование страниц
Когда страница уже сгенерирована, нужно постоянно отслеживать ее актуальность. Для этого вы должны использовать серверный кэш с отслеживанием времени изменения отдельных частей страницы (если страница строится из множества динамически генерируемых блоков).
При таком подходе в каждом ответе от сервера установлены специальные заголовки, обозначающие время изменения страницы, которые затем отправляются браузером пользователя при повторном обращении к странице сайта. Сервер при получении таких заголовков можем проанализировать текущее состояние страницы (возможно, даже отрисовать её), но вместо содержимого страницы отдать заголовок
«304 Not Modified»
, что для пользовательского браузера будет означать, что можно показать страницу из своего (браузера пользователя) кэша.
Конечно, можно отправлять соответствующие заголовки без использования серверного отслеживания кэша, но в таком случае большинство пользователей получат обновление контента страницы довольно поздно. При таком подходе браузер иногда опрашивает сервер для получения обновлений, но периодичность и правила для каждого браузера настраиваются его разработчиком, поэтому надеяться на то, что ваши пользователи получат обновления вовремя, не приходится.
Как правило, кэш подразделяется по типу пользователей:
— для авторизованных; — для неавторизованных.
Данное разделение обусловлено уникальностью контента, для каждого авторизованного пользователя и общностью контента для гостевых пользователей. В большинстве сайтов не авторизованный пользователь не может изменять содержимое сайта, а значит и влиять на его содержимое.
Браузерный кэш позволяет экономить трафик и время, затрачиваемое на загрузку страниц. Но для достижения эффекта экономии, пользователь должен хотя бы один раз посетить нашу страницу, а это означает, что нагрузка на серверные ресурсы уменьшится, но не значительно.
2 попробуйте средство устранения неполадок сети
Если очистка кеша браузера не помогла, можно попробовать встроенное средство устранения неполадок сети Windows 10, которое может помочь в решении этой проблемы.
1. Перейдите в Параметры > Сеть и Интернет > прокрутите вниз на правой панели и нажмите Средство устранения сетевых неполадок.
2. Подождите, пока средство устранения неполадок обнаружит проблемы, и следуйте инструкциям на экране.
Если средство устранения неполадок сети не может решить проблему, перейдите к другим шагам устранения неполадок.
Squid
Сборка прокси сервера аналогична сборке любой программы (configure && make && make install), единственное это указание определённых ключей при компиляции:
wget www.squid-cache.org/Versions/v3/3.2/squid-3.2.7.tar.gztar -zxf squid-3.2.7.tar.gzcd squid-3.2.7./configure –prefix=/opt/squid –enable-ssl –enable-ssl-crtd –with-openssl=/opt/squid/openssl
–enable-ssl — включает поддержку ssl режима–enable-ssl-crtd — генерацией сертификатов занимается отдельный процесс, а не сам прокси сервер.–with-openssl — путь куда был установлен кастомный openssl
make allmake installТак, squid прокси сервер собран.
Серверное кэширование
Под серверным кэшированием понимаются все виды кэширования, при котором данные хранятся на серверной стороне. Эти данные не доступны клиентским браузерам. Кэш создаётся и хранится по принципу «один ко многим» (многие, в данном случае, — это клиентские устройства).
1 Кэширование страницы целиком
Наиболее эффективный кэш. Чем он интересен? Самое большое его достоинство в том, что отдача страницы происходит практически в момент обращения, как следствие – это возможность обработки миллионов запросов даже на самом слабом сервере со скоростью работы памяти и с незначительным задействованием процессора.
Пожалуй, любой когда-либо мечтал о сайте, работающем со скоростью «ping» или быстрее.Но и у этого типа кэша есть свои минусы: например, невозможность кэшировать страницы для авторизованного пользователя, либо пользователя, содержимое страницы которого зависит от текущих переменных пользователя.
Используйте этот кэш, если серверу известны все статичные состояния внешних данных, такие как: uri, get (без дополнительных параметров), пользователь не авторизован — то есть, фактически, это идеальное состояние страницы для гостевых пользователей. Учитывайте тот факт, что при таком кэшировании архитектура сайта или приложения всегда должна однотипно обрабатывать входящие запросы и отдавать однотипные ответы. Такое состояние есть в любом приложении или сайте, его нужно лишь отследить и применить к нему кэш.
Кэширование страниц целиком, чаще всего, применяют в каких-то экстренных случаях, при этом кэш страниц сохраняется на заранее указанное время (от 2 минут), в течение которого ответы от сервера однотипны (не позволяйте браузеру кэшировать это).
2 Кэширование результатов компиляции php-файлов
Различают как чистую компиляцию кода, так и его оптимизацию во время компилирования (подмена скриптов). Наиболее яркие примеры:
— APC; — XCache; — Компиляция с подменой скриптов HipHopVirtualMachine.
И тот и другой вид кэширования могут использоваться в проекте, но у каждого есть собственные нюансы, которые необходимо учитывать при написании кода.
3 Кэширование отдельных блоков страницы
Это, пожалуй, самый интересный, но и сложный вид кэширования. Тем не менее, он тоже может быть эффективным, и на его примере легче всего объяснить принципы кэширования в целом.
7 Кэширование mysql результатов работы, агрегирующие таблицы
Существует правило: обновлений данных должно быть значительно меньше, чем чтения для их отдачи.
То есть не имеет смысл агрегировать то, что изменится в тот же момент, при этом важна актуальность агрегированных данных.
Что выбирать для агрегирования? Обычно это какая-то статистическая информация о числе записей, дате последнего обновления, авторе последнего обновления и тому подобное.
3 очистите кеш сертификатов ssl
Выполните следующие действия, чтобы очистить кеш SSL-сертификатов, хранящийся на вашем компьютере.
1. Щелкните правой кнопкой мыши кнопку Пуск и выберите Выполнить.
2. В окне Выполнить команду введите inetcpl.cpl и нажмите OK.
3. На экране Свойства: Интернет выберите вкладку Содержание и нажмите кнопку Очистить SSL.
4. Щелкните OK, чтобы закрыть окно свойств Интернета.
Убедитесь, что вы перезагрузили компьютер, чтобы изменения вступили в силу.
Генерируем self-signed сертификат
Сертификат будет использоваться прокси сервером для создания динамических сертификатов веб сайтов.
cd /opt/squid/etc/openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
Так как файл squidCA.pem содержит приватный ключ, делаем его читаемым только для пользователя root:chmod 400 squidCA.pem
4 проверьте, не был ли изменен файл hosts
Иногда файл Hosts, расположенный в C:windowssystem32driversetc, может быть изменен вредоносными программами и заблокировать доступ к определенным веб-сайтам.
1. Щелкните правой кнопкой мыши кнопку Пуск и выберите Выполнить.
2. В окне Выполнить введите C:WINDOWSsystem32driversetc и нажмите OK.
3. На следующем экране дважды щелкните файл Hosts и выберите открытие файла с помощью Блокнота.
4. В файле Hosts удалите все записи, содержащие имена веб-сайтов, к которым вы пытаетесь получить доступ, и сохраните файл.
Удалите все записи без знака #, и все будет в порядке.
Настраиваем squid
Добавим следующие строки в squid.conf файл
5 отключите прокси-серверы
Известно, что использование настроек прокси-сервера вызывает проблемы с сетевым подключением при доступе к определенным веб-сайтам.
1. Откройте Параметры > щелкните вкладку Сеть и Интернет.
2. На следующем экране щелкните Прокси-сервер на левой панели. На правой панели отключите параметр Определять параметры автоматически, расположенный в разделе Автоматическая настройка прокси-сервера.
На том же экране прокрутите вниз и отключите параметр Использовать прокси-сервер в разделе ручного прокси.
6 перезагрузите модем/маршрутизатор
Отключите модем/маршрутизатор от источника питания и терпеливо подождите 60 секунд.
Через 60 секунд снова подключите модем/маршрутизатор к источнику питания и дождитесь, пока все индикаторы станут зелеными.
Теперь проверьте, может ли компьютер подключиться к Интернету без каких-либо сообщений об ошибке.
Виды кэширования
Кэширование (или кэш)
– это некий промежуточный буфер, в котором хранятся данные. Благодаря кэшированию страница сайта не воссоздается заново для каждого пользователя. Кэширование позволяет осуществлять работу с большим количеством данных в максимально сжатые сроки и при ограниченных ресурсах (серверных и пользовательских).
Необходимо понимать, что работу с данными можно производить как на стороне клиента, так и на сервере. Притом, серверная обработка данных централизована и имеет ряд несомненных преимуществ (особенно для службы поддержки).
Существует несколько видов кэширования, предлагаем рассмотреть каждый вид, его особенности и рекомендации по применению:
Кеш google chrome на ssl?
Заходим на специальную страницу для вашего браузера
Для Яндекс.Браузер: about:net-internals#hsts
Для Google Chrome, Opera: chrome://net-internals/#hsts
* Для Mozilla Firefox: about:permissions. Найти сайт, нажать на кнопку «Forget About This Site»
* Для Safari: Удалить файл ~/Library/Cookies/HSTS.plist
Находим поле ввода, с именем “Delete domain”
Вписываем в него домен сайта, на котором хотите убрать редирект. (Формат: example.ru ) и нажимаем на кнопку, которая рядом с полем.
Не знаю нужно ли закрывать все другие вкладки, кроме того сайта, с которого редирект, и нужно ли очищать историю, у меня сработало и так.
Инструкция взята отсюда
Заключение
Учитывая постоянную сетевую нагрузку, без кэширования вы не сможете создать ни один проект. Кэширование дает возможность доставить данные большому кругу клиентов, задействовав при этом минимальные ресурсы. В этой статье мы рассмотрели множество видов кэширования, среди которых, уверены, найдется подходящее решение и для вашего проекта.
