php静态缓存 ob局部缓存

作用:适用于淘宝、京东首页 做用户登录
1、用户第一次访问到首页时,是查询所有数据库输出到首页面,当再次刷新(请求)首页时,是根据缓存到本地的文件输出,
以上是php静态缓存
2、运用jquery技术 设置页面加载事件ajax(get)请求,用户首次访问首页面,未登录状态,
在导航区会存有一个登录按钮,此时html文件(页面)已经成功缓存到本地。
3、当用户选择登录成功时,并不会再次缓存一个html文件到本地,而是会再次触发ajax请求
从而实现局部刷新的功能。
接下来,以k780首页为例

k780.php

<?php
//首先也是先判断本地缓存是否存有k780.html页面
if(!is_file("k780.html")){ 
    ob_start();//打开缓冲区   
 ?>
  <!--php页面输出部分内容。也是ob_get_contents()函数取得的全部内容-->  
  <div class="top_uinfo" id='user'>

  </div>
  <!--页面输出部分内容。--> 
 <?php                      
    $info = ob_get_contents(); //得到缓冲区的内容并且赋值给$info   
    $file = fopen('k780.html', 'w');  //打开文件k780.html  
    fwrite($file, $info);    //写入信息到k780.html    
    fclose($file);  //关闭文件k780.html 
 }else{
    echo "cache:";
    echo file_get_contents("k780.html");
 } 

在php页面输出内容时,开启一个ajax(get)页面加载事件

<script type="text/javascript">
    $(document).ready(function(){
        $.get("user.php",function(data){
            $("#user").html(data);

        })
    })
</script>

user.php

<?php 
header("content-type:text/html;charset=utf-8");
if(isset($_COOKIE['name'])){
?>
            欢迎<a style="color:#0077FF;" href="http://www.k780.com/?q=mgr"><?php echo $_COOKIE["name"]; ?></a>
<a href="exit.php">安全退出</a> | <a href="http://www.k780.com/?q=pay&type=recharge"><font color="red">充值</font></a>

<?php

}else{
?>
    <a href="login.php">登录</a>
<?php   } ?>

login.php 用户登录的html页面

<meta charset="UTF-8">
<form method="post" action="logindo.php">
<table>
    <tr>
        <td>用户名:<input type="text" value="" name="name" /></td>
        <td>密 码:<input type="password" value="" name="pwd" /></td>
        <td><input type="submit" value="登录"></td>
    </tr>
</table>
</form>

用户信息匹配成功后,把用户名存入Cookie 同时跳转到k780.php
logindo.php

<?php
//接受到login.php传过来的POST值
$name = $_POST['name'];
$pwd = $_POST['pwd'];
//dsn连接数据库
$dsn = "mysql:host=localhost;dbname=user";
$db = new PDO($dsn, 'root', 'root');
//查询数据库,判断用户输入的信息与数据库信息是否相匹配
$rs = $db->query("SELECT * FROM user where name='$name' and pwd='$pwd'");
while($row = $rs->fetch()){
if($row){
    setcookie('name',$row['name']); //用户名存入Cookie
    header("Location: test_k780.php"); 
  }else{
    echo 0;
  }
}

用户退出,清除cookie 同时跳转到k780.php
exit.php

<?php
setcookie("name", "");
header("Location: test_k780.php"); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值