php缓存——基本缓存
来源:互联网 发布:网络推广课程的广告 编辑:程序博客网 时间:2024/05/25 08:14
1、客户端缓存
<meta>标签,这是进行页面缓存最基本的方法。
<meta http-equiv="expires" content="Mon, 25 Feb 2014 00:00:00 GMT"/><meta http-equiv="pragma" content="no-cache"/>发送到浏览器的HTML页面中的meta标签告诉浏览器页面的缓存时间以及是否启用缓存等,programa:no-cache内容并不是保证,但大多数浏览器都遵从这个约定。
更好的方法是使用header函数,发送http头。
<?phpheader('Expires: Mon, 25 Feb 2014 00:00:00 GMT');header('Pragma: no-cache');?>可以进一步使用HTTP1.1版本的Cache-Control头:
<?phpheader('Expires: Mon,25 Feb 2014 00:00:00 GMT');header('Cache-Control: no-store, no-cache, must-revalidate');header('Cache-Control: post-check=0, pre-check=0', FALSE);header('Pragma: no-cache');?>
上述方法存在的问题是浏览器必须下载页面读取meta标签,浏览器第一次请求页面时,如果不存在标签就会继续下载源文件的缓存拷贝。如果浏览器与服务器之间存在缓存的代理服务器,那么浏览器就可能得到过时的页面。同时,使用HTTP协议进行缓存控制并不是并不能完全保证,Cache-Control和Pragam只是为了保险而添加,同时Expires头可能因为客户端计算机的日期设置错误而失效。
为了更好控制客户端缓存,可以根据客户端的请求来判断,用到的是Last-Modified和If-Modified-Since头,这种行为称为执行一个有条件的GET请求。
这种方法要求每次访问PHP文件时候都要发送Last-Modified头,浏览器下次请求页面时发送包含一个更新时间的If-Modified-Since头,脚本判断从这个时间之后是否更新了页面内容。没有更新就返回一个304状态码后退出。
<?php...//get the filemtimeheader('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastFilemtime). ' GMT');$request = getallheaders();if (isset($requeset['If-Modified-Since'])){ $modifiedSince = explode(';' $request['If-Modified-Since']); $modifiedSince = strtotime($modifiedSince[0]);}else{ $modifiedSince = 0;}if ($lastModified <= $IfModifiedSince){ header('HTTP/1.1 304 Not Modified'); exit();}....//output content?>2、服务器端缓存——使用php的输出缓冲
php内置的缓存机制是输出缓冲器。当使用echo或者print的情形,可以使用输出控制函数(以ob开头)将内容存储在内存缓冲器中。
首先可以将请求的页面在输出前,存储在缓冲器中,如果页面出现了错误,可以隐藏错误而不被访问者看到。
其次可以将输出缓冲器的内容存储到一个文件中,在下一次请求时判断修改时间然后没有过期的话就直接输出文件而提高网站的访问性能。这也是进行动态网站静态缓存的非常好的实现方式。
<?phpif (file_exist('./cache.page') && $lasttime>= filemtime('./cache.page') ){ readfile('./cache.page'); exit;}ob_start();echo <<<EOT..............EOT;$buffer = ob_get_contents();ob_end_flush();$fp = fopen('./cache.page', 'w');fwrite($fp, $buffer);fclose($fp);?>
0 0
- php缓存——基本缓存
- 缓存技术详谈—PHP缓存技术
- 缓存技术详谈—php
- 缓存技术详谈—php
- 缓存技术详谈—php
- 缓存技术详谈—php
- php缓存—静态页面
- 缓存技术详谈—php
- php缓存
- PHP缓存
- PHP 缓存
- php缓存
- php缓存
- PHP缓存之文件缓存
- PHP 缓存之客户端缓存
- 浏览器缓存机制——http缓存
- web缓存机制——浏览器缓存
- Hibernate缓存——查询缓存
- SQLHelperOra.cs
- 电饭锅
- 在ubuntu中复制粘贴文件
- 谷歌
- windows内核情景分析 --- DPC
- php缓存——基本缓存
- LINUX的IIC驱动从这开始(二)
- odex转dex遇到的异常 Cannot locate boot class path file /system/framework/core.odex
- G.726音频编解码原理介绍
- 二维码,计算机视觉,物联网产品----论计算机视觉产品的应用化
- windows内核情景分析---中断处理
- c++ 文件流
- DB2 插入操作sql错误号-302 输入的值对指定的列无效解决办法
- ant+ivy,集成到eclipse中