Истекает и CDNS - проблемы с YSlow
Позвольте мне сначала упомянуть, что я сделал кое-что, но не могу найти правильный ответ на то, что я буду искать.
Я работаю над сайтом, где я использую несколько внешних ресурсов:
Использовать сеть доставки контента (CDN)
Я получаю оценку "F" в разделе "Использование сети доставки контента (CDN)". Другой SO Post ссылается на FAQ YSlow (прямая ссылка), но это кажется чтобы указать, что мне нужно определить мой CDN в моем браузере, который, кажется, быстро исправит меня, но это не решает проблему на других браузерах и/или устройствах.
Добавить истечения заголовков
Что касается класса "Добавить срок действия заголовков", я получаю E. Проблема в том, что я получаю:
There are 3 static components without a far-future expiration date.
(2014/2/26) http://fonts.googleapis.com/css?...
(2014/2/26) http://www.google-analytics.com/analytics.js
(2014/2/26) http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js
Как мне пойти, чтобы исправить это? Мои локальные файлы позаботились о моем .htaccess
, как показано ниже:
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/ico "access plus 1 year"
ExpiresDefault "access plus 7 days"
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
# access plus 1 year
Header set Cache-Control "max-age=31536000"
</FilesMatch>
Этот SO post кажется, что это либо невозможно, либо я вызываю локальный script, где я использую свою пропускную способность для загрузки (и кэширования) требуемого внешние файлы.
Итак, имея в виду эти вещи, вот что я смотрю:
- Внешние ресурсы должны быть CDN, но YSlow читает мои локальные предпочтения, которые будут варьироваться от пользователя к пользователю, поэтому мне нужна альтернатива решению
about:config
, предложенному официальным сайтом YSlow.
- Срок действия истекает на сервере, где находится файл, поэтому у меня нет доступа к определению его значений срока действия. Итак, из того, что я собираю, я мог переносить эти файлы на свой сервер или использовать локальный PHP файл и кэшировать его из указанного файла PHP, расположенного на моем сервере, но это не кажется оптимальным. Есть ли способ обойти это?
Ответы
Ответ 1
Короткий ответ:
Вы не можете контролировать многое, когда вы загружаете ресурсы с таких внешних серверов, но все равно может быть хорошо для вашего сайта. При использовании инструмента, такого как YSlow, важно не попасть в класс "А" для всего. Лучше всего понять подсказки, которые дает вам инструмент, и принимать соответствующие решения.
Более длинные ответы:
Сеть доставки контента
YSlow будет сообщать о более низких оценках для любых доменов, которые он не распознает как CDN. Вы можете добавить имена хостов CDN, то это будет отражать лучшую оценку. Я бы добавил fonts.googleapis.com
и ajax.googleapis.com
, потому что они ведут себя как CDN. Подумайте об этом как о сохранении предпочтений в вашей копии YSlow. Добавление доменов здесь фактически не изменяет вашу производительность, оно просто улучшает вашу оценку.
Истекает заголовки
Вы не можете управлять истекающими заголовками для контента, загружаемого с другого сайта. Параметры, которые вы могли бы рассмотреть:
- Продолжить использование внешних сайтов; в этом случае они довольно хорошо себя ведут, и ваша производительность, вероятно, будет очень хорошей. Просто игнорируйте низкий уровень, который дает YSlow.
- Локально размещайте свои шрифты и файлы jQuery, а затем устанавливайте фьючерсы на фьючерсы, заканчивая заголовками, как показано в
.htaccess
. Это даст вам лучшую оценку YSlow, но фактическая производительность может быть хуже, если ваш сервер медленнее, чем CDN. (см. этот вопрос SO)
- Используйте внешние сайты, но настройте свой URL; в случае jQuery, если вы укажете на более уровне версии (1.8.0 вместо 1.8), вы получите длинный заголовок будущего истечения (см. этот вопрос SO)