Являются ли сеансы быстрее, чем выполнение функции с интенсивным использованием процессора? - PullRequest
1 голос
/ 16 декабря 2010

Я использую встроенную функцию Wordpress wp_nav_menu () для создания меню навигации моего сайта.Эта функция действительно требует много времени для работы, особенно если навигационные меню такие большие, как у меня.Поэтому я решил обойти это следующим образом:

session_start();
if(isset($_SESSION['topTranslucent']))
    echo $_SESSION['topTranslucent'];
else {
    // ob necessary because wp_nav_menu() echos it's results
    ob_start();
    wp_nav_menu(array('menu'=>'Top Translucent','container'=>'','menu_id'=>'topMenu'));
    $_SESSION['topTranslucent'] = ob_get_contents();
    ob_end_flush();
}

Здесь я думаю, что гораздо быстрее будет распечатать html, сохраненный в переменной сеанса, чем повторно запускать функцию при каждой загрузке страницы.Но, не имея большого опыта в php-сессиях, я хотел получить несколько экспертных мнений от ваших милых вундеркиндов в StackOverflow.Вопрос: действительно ли сессии делают то, что они, кажется, делают?(т. е. хранение текстовых данных в файле cookie для использования на страницах), или это больше, чем кажется на первый взгляд?

1 Ответ

1 голос
/ 16 декабря 2010

Сеансы хранят сериализованные данные на сервере; они используют куки только для идентификации. Пример:

Client:
  cookie { PHPSESSID => '1234567890a' }

Server:
  cookie { PHPSESSID => '1234567890a' }
  => session 1234567890a {
     topTranslucent => '<yourcode>whatever</yourcode>'
  }

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

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

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