|
|
|
| Есть часть кода, которая выводит контент на основе результата mysql запроса из одной таблицы.
Обновляться он будет не часто, поэтому хочется сохранять его в файл, и при последующем выводе, если нет изменений в результате запроса, выводить из файла, если есть - генерить файл заново.
Я пока придумал только генерить файл после каждого изменения данных в таблице, но как-то это мне не нравится, не красиво. Нашёл ещё что-то про кеширование средствами mysql, но т.к. никогда не сталкивался, прошу помощи.
Подскажите что и как кешировать, хотя бы алгоритм | |
|
|
|
|
|
|
|
для: NIK
(11.12.2010 в 15:56)
| | Лично я считаю генерить файл после каждого изменения данных в таблице самым верным способом. При запросе данных посетителем, сервер, не задымываясь, отдает ему файл - нарпяга практически ноль. Зачем же придувымать какой-то хомут для сервера? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.12.2010 в 07:38)
| | Зачем тогда тебе вообще mysql. Ложи сразу все в файл. | |
|
|
|
|
|
|
|
для: nikita2206
(12.12.2010 в 11:52)
| | Он и кладет.
Только не всё, а наиболее часто запрашиваемые, из наиболее редко меняемых документов.
Вполне разумная практика - кеширование задействуется на всех уровнях стандартными механизмами протокола. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 12:48)
| | >Вполне разумная практика - кеширование задействуется на всех уровнях стандартными механизмами протокола.
и как же мне задействовать кеширование на уровне мускулины? Чтобы в идеале мускул сам хранил нечто хеша таблицы и при запросе проверял сходится ли этот хеш с текущим, если расходится - выдаёт результат выборки, сходится - отдаёт кешированный результат.
ну или хотябы сверять нечто хэша таблицы с хешем, хранящимся скажем в первой строке файла с кешируемом содержимом, если сходится - отдаём файл, расходится - генирим заново
вспомнил ещё про Update_time таблицы через SHOW TABLE STATUS LIKE 'table' - его можно сверять с датой изменения файла, но как сказад Trianon "это не DML-оператор" и доступен он не во всех типах таблиц.
в принципе два последних варианта это туфта, ибо как ни крути придётся делать запрос к базе, а то и два. поэтому буду просто подключать файл, который будет создаваться каждый раз заново после изменений данных в таблице. но интерес-то остался, хотелось бы найти какое-нибудь другое решение.... | |
|
|
|
|
|
|
|
для: NIK
(12.12.2010 в 14:47)
| | >поэтому буду просто подключать файл,
В каком смысле - подключать? Зачем подключать? Чтобы контент опять перестал быть статическим?
Или Вы имеете в виду подключение на клиентской стороне?
>который будет создаваться каждый раз заново после изменений данных в таблице.
Вот его бы и оставляли для http. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 14:56)
| | Трианон имеет в виду, что можно сгенерировать ВСЮ страницу, от <!DOCTYPE до </html> и отдавать ее посетителю (верно?). Это применяется, например, в shop-script. Если же такой подход по каким-то причинам неудобен, можно генерировать только часть, связанную с выборкой из базы, и инклюдить ее в остальной HTML. Мне это представляется подобным тому, что происходит здесь: http://808.su/. Меню довольно сложное (если пооткрывать все плюсики). И на всех страницах одно и то же. Зачем каждый раз делать запрос к базе и структурировать полученные записи? Вместо этого меню экономически целесообразней формировать при администрировании. Но и формировать весь сайт в виде статического HTML незачем. Зачем была бы нужна база, если все равно используются обычные файлы? Взять 10 строк (для страницы каталога) из базы не велика задача.
Вобщем, Трианон (как я понял), предлагает кешировать полностью сформированные страницы, но я считаю, что такая нужда возникает редко. И когда нужды нет, можно кешировать только часть страницы, а потом собирать с остальными ее фрагментами перед выдачей. | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.12.2010 в 18:41)
| | да, у меня точно такая же задача с многоуровневым меню, т.е.
> можно генерировать только часть, связанную с выборкой из базы, и инклюдить ее в остальной HTML
вопрос в том как это сделать оптимальнее, вернее даже какие ещё есть варианты, кроме как
> формировать (меню) при администрировании | |
|
|
|
|
|
|
|
для: NIK
(12.12.2010 в 20:02)
| | через инлайн фрейм загружай меню что тут думать | |
|
|
|
|
|
|
|
для: NIK
(12.12.2010 в 20:02)
| | Есть варианты:
1) кешировать все страницы целиком. Но тогда возникает геморой с количеством закешированной информации и с анализом, откуда брать инфу, из кеша или из базы (похоже, это то, чем ты пытаешся озадачиться)
2) кешировать только результат сложного запроса, формируя его при администрировании. Для меню, в этом случае, можно применить:
2.1) инклюд, и клеить результат к страницам при выдаче
2.2) фрейм (но эта тема нынче не в чести, хотя позволяет экономить трафик)
2.3) ajax, и клеить меню аяксом. Но тогда по ссылкам не смогут ходить поисковики.
Я бы выбрал вариант 2.1 | |
|
|
|