Создание отличного файла .htaccess, который хорошо обрабатывает общие ресурсы - PullRequest
0 голосов
/ 18 февраля 2012

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

www.pingdom.com имеет большой набор инструментов для анализа веб-сайтов, многие из которых можно использовать бесплатно, и лично я считаю, что лучше всего http://tools.pingdom.com/fpt/. Это показывает время загрузки каждый элемент вашей страницы, но, что более важно, на вкладке «Performance Grade» предлагает разбить, где все может быть лучше. Сейчас я использую несколько ресурсов JQuery, которые обслуживаются Google (и другими), и я понимаю, что они должны существовать на многих прокси-серверах. Я не уверен, как сказать, что в моем файле .htaccess (хотя я пробовал) и, конечно же, анализ Pingdom включает в себя следующую обратную связь:

Следующие общедоступные кешируемые сжимаемые ресурсы должны иметь Заголовок "Vary: Accept-Encoding":

http://jmar777.googlecode.com/svn/trunk/js/jquery.easing.1.3.js

http://kwicks.googlecode.com/svn/branches/v1.5.1/Kwicks/jquery.kwicks-1.5.1.pack.js

Что ж, я думал, что сделал это, но, опять же, возможно, это зависит от серверов, которые на самом деле служат этим ресурсам для установки этих заголовков, и, может быть, я ничего не могу с этим поделать? Это так? В любом случае, вот мой файл .htaccess на данный момент. Пожалуйста, обратите внимание, что у меня слишком низкий уровень кэширования, потому что я все еще только экспериментирую с ним. Я исправлю это, прежде чем начать жить с этим.

suPHP_ConfigPath /home/mydomain/public_html
<Files php.ini>
order allow,deny
deny from all
</Files>

<ifModule mod_deflate.c>
<filesMatch "\.(js|css|php|htm|html)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>

# 1 HOUR
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|htm|html|)$">
Header set Cache-Control "max-age=3600, public"
</filesMatch>

# PHP - NO CACHING WANTED DUE TO USING SESSION COOKIES
<filesMatch "\.(php)$">
Header set Cache-Control "private"
</filesMatch>

# STORE BOTH COMPRESSED AND UNCOMPRESSED FILES FOR JS & CSS
<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>

Вы видите, что я пытаюсь сделать 'Vary Accept-Encoding' ближе к концу файла, но не уверен, что это то, что нужно. Как мне сообщить клиентам, что они имеют доступ к JQuery и тому подобным прокси-серверам, в которых эти файлы, несомненно, хранятся, и есть ли что-то еще, что я могу сделать, чтобы мой файл .htaccess быстрее доставлял контент и контент, дружественный моей поисковой системе?

Спасибо за ваши мысли.

Edit:

Кажется, мои вопросы здесь были недостаточно ясны, поэтому здесь есть некоторые пояснения:

1) Является ли библиотека JQuery, размещенная в Google, чем-то, чья доступность прокси-сервера как-то контролируется моими настройками .htaccess, потому что я делаю удаленную ссылку на нее в своем PHP, и если да, то как я должен сказать, в мой файл .htaccess, «пожалуйста, кэшируйте эту библиотеку в прокси в течение года или около того»?

2) Как мне указать, что размещаемые в Google файлы должны предоставляться сжатыми и несжатыми с помощью Vary Accept-Encoding? В предположении, я бы сказал, что обе проблемы были под контролем Googles, а не моя, поэтому, чтобы сделать это абсолютно явным ...

3) Варианты сжатия и проксирования файлов, таких как библиотека JQuery, находятся под моим контролем или под (в данном случае) Googles?

4) В общем, что-нибудь в моем файле .htaccess выражается неоптимальным (длинным витком) способом и как я могу его укоротить / сжать?

5) Что-нибудь в файле .htaccess секвенировано так, что может вызвать проблемы - например, я ссылаюсь на CSS по трем отдельным правилам - имеет ли значение порядок?

(конец редактирования).

1 Ответ

0 голосов
/ 19 февраля 2012

Является ли библиотека JQuery, размещенная в Google, тем, чья доступность прокси-сервера как-то контролируется моими настройками .htaccess, потому что я делаю удаленную ссылку на нее в моем PHP, и если да, то, как я должен сказать, в моем. htaccess файл, «пожалуйста, кэшируйте эту библиотеку в прокси в течение года или около того»?

Это утверждение неверно. Браузер решает кэшировать или нет, загружать или нет, в зависимости от обмена заголовками только для , который запрашивается только . Таким образом, если ответ на запрос включает запросы к нескольким сайтам, то ваши файлы .htaccess влияют только на то, как они кэшируют ваши файлы. Как он кеширует Google, решать самому Google. Так, например, запрос к http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js получил заголовки ответа:

Age:133810
Cache-Control:public, max-age=31536000
Date:Fri, 17 Feb 2012 21:52:27 GMT
Expires:Sat, 16 Feb 2013 21:52:27 GMT
Last-Modified:Wed, 23 Nov 2011 21:10:59 GMT

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

If-Modified-Since:Wed, 23 Nov 2011 21:10:59 GMT

И в этом случае ajax.googleapis.com ответит 301 и следующими заголовками:

Age:133976
Date:Fri, 17 Feb 2012 21:52:27 GMT
Expires:Sat, 16 Feb 2013 21:52:27 GMT

Этот короткий диалог запроса / ответа обычно требует ~ 50 мсек, поскольку этот контент доставляется по CDN.

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

...