php静态缓存 ob局部缓存

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

k780.php


//首先也是先判断本地缓存是否存有k780.html页面
if(!is_file("k780.html")){ 
    ob_start();//打开缓冲区   
 ?>
    
  <div class="top_uinfo" id='user'>

  div>
   
                       
    $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

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



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

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


//接受到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

setcookie("name", "");
header("Location: test_k780.php"); 

你可能感兴趣的:(php,项目优化)