Итак, тут попался сайт один на «улучшение», который изрядно заполнился контентом и стал жутко тормозить. Сделан сайт «так себе» — руки программиста росли не совсем из того места, и прикручивать туда кэширование блоков и шаблонов будет дольше, чем написать его с нуля. Посмотрел что именно тормозит — тормозят запросы в мускуль. Есть там лютые джоины, которые по 0.5-2 секунды работают. Доступа к настройкам MySQL сервера нету из-за хостера, площадку и тариф менять они не хотят. Оптимизировать БД тоже особо без толку — все индексы на месте, но сама архитектура хромает. Переделывать архитектуру ≈ написать всё с нуля. Из-за некоторых особенностей memcached неприменим. И вот я задумался о кэшировании результатов запросов. Алгоритм мне в голову пришёл такой:
1. Делаем запрос в БД, получаем результат, формируем массив из записей.
2. Берём md5 от текста запроса
3. Делаем serialize результата, сохраняем его в файл с названием %md5 из третего пункта%. Конских размеров файла не будет — результаты запросов все не особо длинные, просто сами запросы плохие.
4. При следующей выборке проверяем существование файла с именем %хэшем текста запроса% и, если он есть, то делаем unserialize и отдаём результат.
Нормальный вариант или можно как-то лучше, проще, быстрее?
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
Veseloff
Итак, тут попался сайт один на «улучшение», который изрядно заполнился контентом и стал жутко тормозить. Сделан сайт «так себе» — руки программиста росли не совсем из того места, и прикручивать туда кэширование блоков и шаблонов будет дольше, чем написать его с нуля. Посмотрел что именно тормозит — тормозят запросы в мускуль. Есть там лютые джоины, которые по 0.5-2 секунды работают. Доступа к настройкам MySQL сервера нету из-за хостера, площадку и тариф менять они не хотят. Оптимизировать БД тоже особо без толку — все индексы на месте, но сама архитектура хромает. Переделывать архитектуру ≈ написать всё с нуля. Из-за некоторых особенностей memcached неприменим. И вот я задумался о кэшировании результатов запросов. Алгоритм мне в голову пришёл такой:
1. Делаем запрос в БД, получаем результат, формируем массив из записей.
2. Берём md5 от текста запроса
3. Делаем serialize результата, сохраняем его в файл с названием %md5 из третего пункта%. Конских размеров файла не будет — результаты запросов все не особо длинные, просто сами запросы плохие.
4. При следующей выборке проверяем существование файла с именем %хэшем текста запроса% и, если он есть, то делаем unserialize и отдаём результат.
Нормальный вариант или можно как-то лучше, проще, быстрее?
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.