2012-02-16 1 views
1

Я написал пользовательскую CMS, которая может размещать несколько клиентов/сайтов. Сайты и их различные части хранятся в структуре каталога/имя-имя-имя-сайт-имя.Условные перезаписи URL-адресов в PHP

htaccess передает каждый запрос через индекс, который не существует.

Это не идеальный вариант: «/clients/client-name/site-name/images/img.jpg», поэтому, чтобы разрешить «/images/img.jpg», я захватил запрос, и тогда я эффективно обслуживать реальное местоположение файла; заголовки и все. Я тоже делаю это для CSS, JS и т. Д.

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

Кто-нибудь знает об этом? Решение Apache config или htaccess будет прекрасным, но ему нужно знать расположение файла, который находится из БД, разработанного индексом CMS.

Помощь!

+2

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

ответ

2

Я обслуживаю JavaScript через PHP-скрипт (который я использую для объединения/минимизации JavaScript, поэтому я обслуживаю один файл).

Я использую следующие заголовки для обеспечения их кэширования:

header('Content-type: text/javascript'); 
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 6048000)); 

В моем случае исходная загрузка занимает 982ms. После этого требуется всего 87 мс для извлечения из кеша для каждого последующего запроса (Firefox 10.0.1)

+0

Спасибо, я не знаю, почему я забыл выталкивать заголовок. – DrKHunter

+0

@DrKHunter - не беспокойтесь - рад помочь. – Fenton

+0

header («Cache-Control: private, max-age = 10800, pre-check = 10800»); header ("Pragma: private"); заголовок («Истекает:». Дата (DATE_RFC822, strtotime («2 дня»))); - это то, что я использовал в конце – DrKHunter

Смежные вопросы