我使用原生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中以跨页面使用),还是不仅仅满足于眼睛?
答案 0 :(得分:1)
会话将序列化数据存储在服务器上;他们只使用cookies进行识别。例如:
Client:
cookie { PHPSESSID => '1234567890a' }
Server:
cookie { PHPSESSID => '1234567890a' }
=> session 1234567890a {
topTranslucent => '<yourcode>whatever</yourcode>'
}
你的方法可行;请注意,整个会话将在加载时被反序列化(因此过度使用会降低系统速度,因为它会加载大量数据。使用这个来处理几个小片段应该没问题。)
可能更好的方法是使用不同的机制作为缓存,但是session-as-a-cache有些可用。