我有一个页面,拉2-3块数据从sql。这些块被分解成大约20个不同的变量。
您导航到的每个页面都将反复使用相同的数据。
问题:
我应该将所有变量都放在会话变量中,还是应该在每个页面上查询数据库,每次都重新建立数据和变量。
其中一些页面修改了数据库,随后修改了变量。
谢谢。
发布于 2012-01-22 02:10:33
是的,如果有一个缓存机制就好了。但是,php的会话变量不是最好的解决方案。您可以使用诸如APC或MemCached之类的缓存系统,也可以简单地将它们存储到硬盘上的文件中。
不使用会话变量的原因:
session_start,变量都将被反序列化并加载,无论您是否需要它们。发布于 2012-01-22 02:14:50
您应该尽可能地将数据存储在$_SESSION中(假设它不是大量的数据,并且它总是被反复使用)。
你最大的问题是如果数据发生变化会发生什么。您可以使用以下代码不时地刷新它们:
if( rand(0,100) < 10){
readSessionsFromPost();
}另一种方法是修改本地文件,并通过mtime将其检入到每个请求中(并将最后一个值存储在$_SESSION中)。或者,您可以使用:
$time = $db->fetch_one( 'SELECT MAX(mtime) FROM pages');
strtotime( $time) >= $_SESSION['time'];要而论之。
如果您不关心用户在20个请求之后获得当前数据,那么您应该使用rand (实际上我关心的是,并且永远不会使用this :)。
如果您有权配置文件访问,则应使用mtime和modified time (不需要请求数据库)。
如果你只有很少的用户,并且有很好的服务器性能储备,你应该每次都加载它们(或者当数据每隔几秒钟发生变化时)。
缓存增加了一些开销,您必须确定缓存这些数据是否对性能至关重要。
https://stackoverflow.com/questions/8955275
复制相似问题