例如,使用cookie加速Web应用程序

时间:2013-02-12 12:25:01

标签: php jquery mysql caching cookies

现在我使用此代码在我的网络应用程序中获取随机文本。

 $(document).ready(function() {
      $("#refresh").click(function(evt) {
         $("#content").load("load.php")
         evt.preventDefault();
      })
    })

Load.php正在从数据库中加载随机文本。他们能做些什么来加速这次会议。如果有人也知道如何在没有3G和WiFi的情况下使用webb应用程序会很棒。

2 个答案:

答案 0 :(得分:0)

您可以在php代码中添加缓存功能。

加载随机文本时,将其写入/cache/mytext.cache并将unix时间戳写入/cache/mytext.info

现在,在您的php脚本之上,阅读/cache/mytext.info并检查它是否太旧,如果是,生成新文本并更新mytext.info的时间戳,否则,以文本形式加载/的内容高速缓存/ mytext.cache

// Fetch the timestamp saved in /cache/mytext.info
$cachedate = file_get_contents('./cache/mytext.info', true);

// If timestamp + _× seconds_ is < of current time  
if(($cachedate + 3600) < time()) {

    // Fetch your new random text and store into $mytext
    // for example: $mytext = getrandomtext();

    // Write into /cache/mytext.cache your new random text
    $fp = fopen('./cache/mytext.cache', 'w');
    fwrite($fp, $mytext);
    fclose($fp);

    // Update timestamp written into /cache/mytext.info
    $fp = fopen('./cache/mytext.info', 'w');
    fwrite($fp, time());
    fclose($fp);

}

// Your random text is into $mytext
$mytext = file_get_contents('./cache/mytext.cache', true);

// Print it with echo
echo $mytext;

答案 1 :(得分:0)

在浏览器中缓存单个请求并使用jQuery非常有用,并且使用得很少,Deferreds http://api.jquery.com/category/deferred-object/,其中ajax调用是一个实例,以确保它只在内容到达时才加载

$(document).ready(function() {
  var nextContent = $.get('/load.php');//preload the result of the first random text request
  var clicked = false;

  $("#refresh").click(function(evt) {
     if (!clicked) { // prevent sending loads of requests if user reclicks impatiently
        clicked = true;

        nextContent.done(function (response) { 
          console.log('yay')
          $("#content").html(response); // print the text
          clicked = false;
          nextContent = $.get('/load.php'); //preload the next request
        })
     }
     evt.preventDefault();
  });
})