Php 从DB和会话中重复获取映像路径的优点和缺点
目前,我使用如下会话显示配置文件图像:Php 从DB和会话中重复获取映像路径的优点和缺点,php,html,mysql,session,Php,Html,Mysql,Session,目前,我使用如下会话显示配置文件图像: <img src="<?php if (isset($_SESSION['userimage'])){ echo $_SESSION['userimage']; }?>" /> <img src="<?php echo $row['userimage'] ?>"/> function showUserImage($url = null) { if (!isset($url)) {
<img src="<?php if (isset($_SESSION['userimage'])){
echo $_SESSION['userimage']; }?>" />
<img src="<?php echo $row['userimage'] ?>"/>
function showUserImage($url = null) {
if (!isset($url)) {
$url = 'standarduserpic.png';
}
echo '<img src="' . $url . '">';
}
“/>
像这样直接从MySQL获取它们的好处和坏处是什么:
<img src="<?php if (isset($_SESSION['userimage'])){
echo $_SESSION['userimage']; }?>" />
<img src="<?php echo $row['userimage'] ?>"/>
function showUserImage($url = null) {
if (!isset($url)) {
$url = 'standarduserpic.png';
}
echo '<img src="' . $url . '">';
}
“/>
它对性能有影响吗?我看到很多程序员选择显示会话中的用户名来迎接登录的用户,而不是从数据库中获取用户名。我假设,数据库中有一个指向图像的文件路径,还需要获取一次才能进入会话 如果您不需要数据库中的任何内容,至少不需要此用户的任何内容,则应将所有内容存储在会话中 如果您仍然需要连接到数据库,特别是从用户行获取数据,那么应该使用第二种方法 这取决于用例及其成本。尝试一点基准测试 还可以考虑一个好的缓存机制。它可以带来更多的优化,然后在这里 我也会有这样的东西:
<img src="<?php if (isset($_SESSION['userimage'])){
echo $_SESSION['userimage']; }?>" />
<img src="<?php echo $row['userimage'] ?>"/>
function showUserImage($url = null) {
if (!isset($url)) {
$url = 'standarduserpic.png';
}
echo '<img src="' . $url . '">';
}
函数showUserImage($url=null){
如果(!isset($url)){
$url='standarduserpic.png';
}
回声';
}
如果在生成每个页面时从数据库获取路径,则会增加数据库和应用程序之间的通信量。如果数据库位于另一台服务器上,则需要一些时间,甚至可能需要一些带宽 如果只从数据库中提取一次并将其存储在会话中,则不存在此开销。但是,如果路径发生更改(例如,当用户更改其配置文件图像时),则必须刷新会话中的值。维护会话和DB之间的一致性可能需要一些努力——在更改路径时,您需要同时更新DB和会话变量(或者为尚未创建映像的用户创建新映像)。请注意,在更新或使用会话变量之前,必须调用
session\u start()
我个人会选择只从数据库中获取一次值,并将其缓存在会话中。如果还没有加载,我会在session_start()
之后立即从数据库加载路径,这样我就不需要在生成HTML时测试正在设置的会话变量
<?php
…
session_start();
if (!isset($_SESSION['userimage'])) {
$_SESSION['userimage'] = loadUserImageFromDB();
}
…
?>
…
<img src="<?php echo $_SESSION['userimage'];?>"/>
…
…
"/>
…
您是否已将图像存储在db中?”/>@OnlyMAJ no我在Folder中的一个文件中输入了文件路径directlyget from session每次提取都比较好。