Назад | Перейти на главную страницу

Установка заголовков Expires для вещей, полученных с помощью строки запроса

У меня установлена ​​MediaWiki, и я оптимизировал различные аспекты, используя инструмент Google PageSpeed ​​в качестве руководства, и до сих пор мне удалось внести множество улучшений.

Одно я не еще может установить заголовок Expires с использованием моего файла .htaccess для следующего ресурса:

http://example.com/mywiki/load.php?debug=false&lang=en-gb&modules=startup&only=scripts&skin=vector&*

У него нет обычного расширения файла, такого как .css или .js.

Жестяная банка Я установил заголовки Expires в моем файле .htaccess для таких файлов?

Короткий ответ: вероятно, не рекомендуется устанавливать заголовок Expire для этих ресурсов.

Пояснение:

Вам нужно больше узнать об основах формата URL и его разделителей. ://, @, :, ? и #:

scheme://[user:password@]domain:port/path?query_string#fragment_id

В вашем URL:

  • Схема: http
  • Имя пользователя и пароль отсутствуют.
  • Домен: example.com
  • Порт отсутствует, по умолчанию используется порт HTTP 80
  • Дорожка: /mywiki/load.php
  • Строка запроса: debug=false&lang=en-gb&modules=startup&only=scripts&skin=vector&*
  • Идентификатор фрагмента отсутствует.

Основная проблема здесь в том, что вы смешиваете путь и строку запроса друг с другом. Местоположение вашего файла /mywiki/load.php и у него обычное расширение файла, .php. Строка запроса в этой части отправляет данные для этого PHP-скрипта для обработки пар: имя / значение, разделенных амперсандами.

Теперь, когда мы знаем, что имеем дело с PHP-скриптом, мы должны понимать, что Apache теперь предоставляет динамический контент: контент, который меняется. Как правило, не рекомендуется устанавливать контроль кеширования для такого рода содержимого. Если мы захотим, это возможно. Мы могли бы установить его по расширению файла в .htaccess или сам скрипт PHP также может устанавливать заголовки кеша, например

header("Expires: " . gmdate("D, d M Y H:i:s", time() + 3600) . " GMT");

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