как кэшировать мой веб-сайт?

Большинство брандмауэров непредприятия работает в одном из двух режимов: NAT или соединенный мостом

NAT является традиционной топологией, о которой Вы думаете. Брандмауэр имеет единственный общедоступный IP в сети и переводит между ним и частным, non-routable класс. В этом случае машины "позади" брандмауэра имеют частные IP-адреса и поэтому не публично routable.

В режиме моста брандмауэр настроен для эффективного покрытия IP "пространство". Это пространство является в основном сетью/сетевой маской, в которой дюйм/с расположены. Например, для публично routable класса 74.52.192.0/29, который охватывает 74.52.192.1 - 74.52.192.7, может быть настроен на брандмауэре с интерфейсом брандмауэра, имеющим любой адрес в диапазоне. Если брандмауэр будет в режиме моста и настроен как таковой, то Вы сможете иметь машины, соединяющиеся как любой другой дюйм/с в 74.52.192.0/29 сети (тот, который использует брандмауэр, конечно, недоступно).

2
задан 6 March 2016 в 05:34
4 ответа

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

Первый элемент, который вы упомянули, - «много изображений CSS. '- это не проблема сервера как таковая. Чтобы получить их, браузер должен сделать запрос для каждого изображения, каждое со своими накладными расходами. Объедините изображения в спрайт CSS, чтобы можно было минимизировать количество запросов и максимизировать сжатие, применяемое выбранным форматом изображения. Похожая идея применима к файлам CSS и JS - объединяйте и минимизируйте, насколько это возможно. Для рекомендаций по конкретным веб-сайтам попробуйте Google Pagespeed или Yahoo YSlow.

На стороне сервера есть несколько кешей для PHP, которые будут хранить промежуточные формы переведенного скрипта - кеши кодов операций. Наиболее часто используется APC, но также часто используются xcache и eaccelerator (используйте только один из них).

С точки зрения PHP, кеширование обычно включает создание статической копии вашего контента. Этого можно добиться с помощью буферизации вывода (функции ob_ * (например, ob_start ()). Вы начинаете буферизацию перед отправкой любого содержимого, заканчиваете буферизацию после того, как ваша страница полностью построена, и сохраняете полученный контент в файл. Затем вы проверяете, наличие такого файла перед попыткой выполнения сценария PHP (например, если кеш существует, обслуживайте его, иначе загрузите сценарий).

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

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

1
ответ дан 3 December 2019 в 11:59

Управление кэшированием статических html-файлов с помощью метатегов не совсем стабильно, по крайней мере, на мой взгляд. Вам следует взглянуть на mod_expires (используя HTTP-заголовок для управления кешем): http://httpd.apache.org/docs/2.0/mod/mod_expires.html

Если вы хотите кэшировать динамические сайты, вы может кэшировать всю страницу или только запросы к базе данных (в зависимости от дизайна вашей базы данных / сайта). Возможно, эта ссылка будет полезна: http://blog.digitalstruct.com/2008/02/27/php-performance-series-caching-techniques/

0
ответ дан 3 December 2019 в 11:59

Ваш вопрос очень широкий. «Кеширование» выполняется на нескольких разных уровнях, поэтому вопрос «как мне кэшировать мой веб-сайт» похож на вопрос «как мне приготовить ужин». Есть много способов сделать это.

Вы можете кэшировать на уровне базы данных, если у вас есть динамический веб-сайт с базой данных, такой как MySQL. Вы можете кэшировать на уровне PHP с помощью memcache или APC . Вы можете кэшировать на уровне сервера с помощью обратного прокси, такого как Varnish .

И они даже не касаются кэширования на стороне клиента (т.е. каждый клиентский веб-браузер кэширует контент для этого конкретного человека), что это то, о чем вы говорите с .htaccess и информацией заголовка .

Лучше сосредоточиться на кэшировании на стороне сервера, а не на кэшировании на стороне клиента.

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

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

Если у вас очень загруженный веб-сайт, я бы рекомендовал изучить, как работает Varnish или другой сервер кэширования обратного прокси.

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

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

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

Если у вас очень загруженный веб-сайт, я бы рекомендовал изучить, как работает Varnish или другой сервер кэширования обратного прокси.

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

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

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

Если у вас очень загруженный веб-сайт, я бы рекомендовал изучить, как работает Varnish или другой сервер кэширования обратного прокси.

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

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

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

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

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

0
ответ дан 3 December 2019 в 11:59

Как заявил Дэвид, ваш вопрос очень широкий.

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

Что ж, HTTP имеет функции, которые позволяют вам это делать.

Начиная с основ, HTTP - это протокол запроса-ответа. Браузер отправляет запрос на ресурс, и сервер отвечает. И запросы, и ответы содержат заголовки, которые описывают, как браузер и сервер должны вести себя при получении ответов и запросов соответственно.

Вы можете указать браузерам ваших пользователей кэшировать изображения и файлы. Истекает и Cache-Control: max-age. Они определяют «время жизни» ресурса, то есть период времени, в течение которого браузер может использовать кэшированный ресурс, не проверяя, доступна ли новая версия с веб-сервера. Это «сильные заголовки кеширования», которые применяются безоговорочно; то есть, когда они установлены и ресурс загружен, браузер не будет выдавать никаких запросов GET для ресурса до тех пор, пока не будет достигнут срок действия или максимальный возраст.

Last-Modified и ETag. Они определяют некоторые характеристики ресурса, которые браузер проверяет, чтобы определить, совпадают ли файлы. В заголовке Last-Modified это всегда дата. В заголовке ETag это может быть любое значение, однозначно идентифицирующее ресурс (обычно версии файлов или хэши содержимого). Last-Modified - "слабый" caching, в котором браузер применяет эвристику, чтобы определить, извлекать ли элемент из кеша или нет. (Эвристика различается для разных браузеров.) Однако эти заголовки позволяют браузеру эффективно обновлять свои кэшированные ресурсы, выдавая условные запросы GET, когда пользователь явно перезагружает страницу. Условные GET не возвращают полный ответ, если ресурс не был изменен на сервере, и, следовательно, имеют меньшую задержку, чем полные GET.

Важно указать одно из Expires или Cache-Control max-age и одно из Last -Modified или ETag для всех кэшируемых ресурсов. Излишне указывать и Expires, и Cache-Control: max-age, или указывать и Last-Modified, и ETag.

Взято из: http://code.google.com/speed/page-speed /docs/caching.html.

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

Вот пример того, что вы можете поместить в свой .htaccess (это может быть именно тем, что вам нужно):

<FilesMatch "\.(css|swf|png|jpg|jpeg|gif)$">
Header unset Pragma
Header unset Expires
Header set Cache-Control "max-age=604800"
</FilesMatch>

Однако, прежде чем вы это сделаете, я предлагаю вам загрузить подключаемый модуль Google Page Speed ​​для Chrome ( http://code.google.com/speed/page-speed/download. html ) и установите его. Затем запустите тест скорости страницы и посмотрите его результаты, особенно раздел «Использование кеширования браузера», чтобы понять, действительно ли вам нужно предпринимать какие-то действия.

htaccess (это может быть именно то, что вам нужно):

<FilesMatch "\.(css|swf|png|jpg|jpeg|gif)$">
Header unset Pragma
Header unset Expires
Header set Cache-Control "max-age=604800"
</FilesMatch>

Однако, прежде чем вы это сделаете, я предлагаю вам загрузить плагин Google Page Speed ​​для Chrome ( http://code.google.com/speed/page-speed /download.html ) и установите его. Затем запустите тест скорости страницы и просмотрите его результаты, особенно раздел «Использование кеширования браузера», чтобы понять, действительно ли вам нужно предпринимать какие-либо действия.

htaccess (это может быть именно то, что вам нужно):

<FilesMatch "\.(css|swf|png|jpg|jpeg|gif)$">
Header unset Pragma
Header unset Expires
Header set Cache-Control "max-age=604800"
</FilesMatch>

Однако, прежде чем вы это сделаете, я предлагаю вам загрузить плагин Google Page Speed ​​для Chrome ( http://code.google.com/speed/page-speed /download.html ) и установите его. Затем запустите тест скорости страницы и просмотрите его результаты, особенно раздел «Использование кеширования браузера», чтобы понять, действительно ли вам нужно предпринимать какие-либо действия.

1
ответ дан 3 December 2019 в 11:59

Теги

Похожие вопросы