Использование mod_rewrite для просмотра кэшированной версии с обычного URL - PullRequest
1 голос
/ 10 апреля 2011

Мой сайт PHP генерирует статические HTML-версии динамического кода, управляемого БД, и сохраняет их в папке с именем cache.

Это означает, что когда вы заходите, скажем, / about-us /, запрос направляется через index.php? Page = about-us и создает файл с именем /cache/about-us.html.

.

Если этот файл существует, PHP включает его, а затем завершается. Это кажется пустой тратой времени, почему бы просто не заставить apache обслуживать /cache/about-us.html при запросе / about-us /, но только если он существует.

Мой текущий раздел mod_rewrite только включает это:

RewriteRule ^([A-Za-z0-9-_/\.]+)\/$ /?page=$1 [L]

Который записывает любой / foo_bar / запрос в index.php? Page = foo_bar. Что я могу поставить перед этим, чтобы запросить мою кэшированную версию, если она существует?

1 Ответ

1 голос
/ 10 апреля 2011

Сначала отправьте все в папку / cache /

RewriteRule ^([A-Za-z0-9-_/\.]+)/$ /cache/$1

Затем проверьте, не найден ли он, и перенаправьте

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/cache/([A-Za-z0-9-_/\.]+)$ /page?=$1 [L]

В зависимости от того, как настроен ваш сервер, вам, возможно, придется немного изменить пути (я бы рекомендовал использовать абсолютные). Также обратите внимание, что это также относится к изображениям, которые соответствуют RewriteRule

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...