Другие языки программирования и технологии

Кеширование страниц на PHP

задумался о кешировани страниц, средствами пхп что напридумывал мой i7 (фактическая производительность Pentium D Радость ) брать то что будет выводится в браузер и записывать в хтмл файл, именовать md5 хешем самого файла, далее проверка времини существования файла, если больше то перезаписываем, а меньше выводим но теперь трудность если контент на странице изменится, то и изменится ее md5, как быть с теми файлами кеша которые не пригодны уже??? да и в принцепе верен ли мой подход к кешированию??? еще одно, кешируя страницы в файл придется на папку устанавливать права 777, а тут могут возникнуть проблемы безопасности как вариант кеширование в таблицу мускуля, но ту увеличивается количество запросов в том случае если кеш устарел и что делать или я не прав по поводу прав доступа к паке??? и вот на последочек... как обходится с тем что не должно кешироваться, к примеру, какие либо определенные модули страницы
Алексей )))))))))))
Алексей )))))))))))
1 996
>> брать то что будет выводится в браузер и записывать в хтмл файл, именовать md5 хешем самого файла, далее проверка времини существования файла, если больше то перезаписываем, а меньше выводим

Угу, рано или поздно ты так всю базу тогда вытащишь.

Вот наивная реализация:
пришел запрос - создать страницу и сохранить
пришел следующий запрос - отдать созданную страницу если она еще валидна
изменилось состояние данных - пометить страницы, зависящие от измененных данных невалидными

Хотя на самом деле это надо бы делать между представлением и, собственно, данными.. .

>> да и в принцепе верен ли мой подход к кешированию?? ?
Обычно самым узким и нераспараллеливаемым местом являются реляционные БД. Кеш нужен прежде всего для того, чтобы не обращаться лишний раз к базе. А непосредственно генерация, по сути, не стоит ничего.
Денис Сенин
Денис Сенин
2 291
Лучший ответ
Алексей ))))))))))) в принципе это то что описал я, но как быть с теми данными которые нет нужды кешировать, скажем есть пользователи и их страницы с профилем не надо кешировать, но на странице, помимое личныхданных профиля есть еще много чего, скажем меню разделов выводимое из базы, как быть в такой ситуации???
Если страница статическая, то кешировать не надо, тем более, применять пхп.
Подход верен, но это делается автоматом. Вы изменяете PHP файл, затем пхп транслятор его один раз транслирует и использует результат до тех пор, пока вы снова не измените файл. Это и есть Ваш метод кеширования =). Настраивается в файле php.ini. Настроек там куча.
Кешировать вручную в папки точно не стоит.
В общем, пхпм сам кеширует. То, что может быть закешировано, кешируется автоматически. То, что не должно - выполняется из предварительно транслированного кода. С этим проблем нет.

Если занимаетесь нагруз-проектом, позаботьтесь о кешировании данных из БД. Обычно, это самая затратная часть, которую как раз нужно кешировать. Погуглите утилиту memcached.