• 技术文章 >后端开发 >php教程

    php浏览器缓存解决高并发,该如何解决

    2016-06-13 11:49:03原创455
    php浏览器缓存解决高并发
    我在页面头部这样写了一个缓存,
    $cache_time = 60*10; //十分钟缓存
    $modified_time = @$_SERVER['HTTP_IF_MODIFIED_SINCE'];
    if( strtotime($modified_time)+$cache_time > time() ){
    header("HTTP/1.1 304");
    exit;
    }
    header("Last-Modified: ".gmdate("D, d M Y H:i:s", time() )." GMT");
    echo "
    ";
    echo date('Y-m-d H:i:s',time());
    ?>

    问题一:
    浏览器在这十分钟之内只会从浏览器去取数据;
    问题二:
    如果数据库的数据更新,动态页面就不是动态页面的,读的还是浏览器的。怎样可以做到页面更新,缓存重新开始计算呢?有什么办法可以页面变动缓存重新开始?
    在线求告诉回答!

    大家一般都是怎么解决高并发的问题的呢?
    ------解决方案--------------------
    php只能做一些数据缓冲,解决高并发需要从服务器入手,比如你的Apache,Ngix缓存可以参考smarty
    ------解决方案--------------------
    调用缓存是在,数据没有更新的时候,去调用缓存,在调用缓存的时候应该去判断 数据是否更新 如果存在更新 你再去重新请求数据
    ------解决方案--------------------
    你這種緩存刷新就會更新。
    ------解决方案--------------------
    每次访问页面,浏览器都会像服务端发起请求,你看到的304,200等是服务端告诉浏览器的,而不是浏览器自己判定的。对于动态页面,即使你设了缓存时间,如果数据变动,默认还是会返回最新的数据,而不是浏览器缓存的数据。
    ------解决方案--------------------
    做缓存的话不一定要这么做,可以用memcache,比你这么弄好... 个人想法
    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:nbsp time modified header php
    上一篇:基础题:关于parent子类属性?该怎么解决 下一篇:php在函数外宣言global变量有什么用
    大前端线上培训班

    相关文章推荐

    • 怎样使用PHP中的spl_autoload_register() 和 __autoload() 函数?• 你必须了解PHP中什么是抽象类和抽象方法• PHP中怎样去判断对象是否属于一个类?• 五分钟带你看PHP中的接口interface声明与应用(实例详解)• PHP中怎样完成Cookie的创建、读取和删除?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网