`
xieye
  • 浏览: 835356 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php缓存由php生成的html组件的功能实现

    博客分类:
  • PHP
阅读更多
html组件一般包括js,css,图片,某些特定情况下,不是直接访问,而是通过php访问,这里描述如何缓存,并以图片举例。
缓存能稍许加快速度。
要注意:无论如何,这样操作一定比服务器直接返回图片慢不少,只适用于特定场合。
环境:linux apache2, php5.2.6,php.ini时区设好PRC
     假定/www/images/demo.jpg存在。

实现:
以下是1.html
<img src="1.php?img=demo.jpg" />



以下内容是1.php

$fullpath = '/www/images/' . basename($_GET['img']); //假定文件都在/www/images/下
if (!is_file($fullpath)) {
  header("HTTP/1.0 404 Not Found");
  exit();
}

$info = getImageSize($fullpath); //获取图片信息
if (!$info) {                    //如果不是图片
  header("HTTP/1.0 404 Not Found");
  exit();
}


// 以下凡是header函数都是在输出头部信息。较多。
header('Content-type: '. $info['mime']);          //类似于image/png
header('Content-Length: '. filesize($fullpath));  //文件长度

header('Pragma: ');                       //没用,但要设置,防止服务器生成no-cache的可怕字眼

//手动设置过期时间,单位都是秒
$validtime = 48* 60 * 60;    // 48小时

//缓存相对请求的时间,
header('Cache-Control: ' . 'max-age='. $validtime);          

//也很重要的Expires头,功能类似于max-age
//time()+$validtime: 设置期限,到期后才会向服务器提交请求
//gmdate,生成Sun, 01 Mar 2009 04:05:49 +0000  的字符串,而且是GMT标准时区
//preg_replace,  生成Sun, 01 Mar 2009 04:05:49 GMT,  注意:可能与服务器设置有关,但我都用默认设置
header('Expires: ' . preg_replace('/.{5}$/', 'GMT', gmdate('r', time()+ $validtime)));     

//文件最后修改时间
$lasttime = filemtime($fullpath);

//最后修改时间,只有设置了,点击刷新时,浏览器再次请求图片才会发出'IF_MODIFIED_SINCE'头,从而被php程序读取
header('Last-Modified: ' . preg_replace('/.{5}$/', 'GMT', gmdate('r', $lasttime) ));     

//重要,如果请求中的时间和 文件生成时间戳相等,则文件未修改,客户端可用缓存
if (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $lasttime) {
  header("HTTP/1.1 304 Not Modified"); //服务器发出文件不曾修改的指令
  exit();
}

//如果文件被修改了,只好重新发出数据
echo file_get_contents($fullpath);


检验方法,用firefox的firebug看。多次刷新,如果图片返回304,则缓存成功。

  • 大小: 41.3 KB
分享到:
评论

相关推荐

    PHP 缓存 PHP 缓存

    - 另一个高性能的 PHP 扩展,提供代码和数据缓存功能。 - 由国内开发者开发,在国内拥有较高的使用率。 #### 八、使用缓存时易忽视的问题 1. **何时使用缓存:**一般建议在完成基本的系统架构设计后再考虑引入...

    php模板与生成HTML

    在这个主题下,我们将深入探讨PHP模板的原理、常用的PHP模板引擎以及如何通过PHP生成静态HTML页面。 1. **PHP模板的基本概念** PHP模板是一种编程范式,允许开发者用PHP代码嵌入HTML,用于动态生成网页内容。它的...

    PHP静态文件生成类库

    这个类可能包括生成静态HTML、管理缓存、处理URL重写以及与数据库交互来获取动态数据等功能。 当我们谈论“静态化”时,我们指的是将动态生成的页面转化为静态HTML,这样用户在后续访问时就不需要再经过服务器的...

    把php生成静态(html)页面程序类.zip

    标题提到的“把php生成静态(html)页面程序类.zip”是一个压缩包,其中包含了一个PHP类,用于将动态生成的PHP页面转换为HTML静态文件。这一过程通常被称为静态化。 首先,我们来看PHP动态页面和静态HTML页面的区别。...

    田字格笔顺字帖在线生成器php源码

    田字格笔顺字帖在线生成器是一款基于PHP开发的应用,它允许用户通过网页界面自动生成含有正确笔顺的田字格字帖。这个源码项目涵盖了9574个常用的汉字,为学习者提供了方便的工具来练习汉字书写,尤其适合初学者和...

    PHP生成二维码实例附演示地址(yii框架生成二维码).rar

    本教程将深入探讨如何在Yii框架下利用PHP生成二维码。 首先,让我们了解一下Yii框架。Yii是一个高性能的、基于组件的PHP框架,适用于开发Web 2.0应用。它提供了一系列强大的特性,如MVC(模型-视图-控制器)架构、...

    php_memcache.dll 32位 64位 php组件

    标题中的“php_memcache.dll”是指PHP的一个扩展模块,它允许PHP应用程序与Memcached缓存系统进行交互。Memcached是一个高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高Web应用的性能。在高流量的网站...

    php 自动缩略图,php智能生成缩略图

    GD库是PHP的标准组件,用于处理JPEG、PNG、GIF等多种格式的图像,而Imagick库则提供了更高级的功能,包括对更多图像格式的支持和更多的图像处理操作。 2. 图像尺寸计算:自动缩略图的核心是确定新尺寸。这可以通过...

    PHP生成二维码的接口文件

    本文将深入探讨如何使用PHP生成二维码,以及与Redis缓存服务的集成。 首先,我们关注的是"PHP生成二维码的接口文件"。这意味着我们要创建一个PHP脚本,该脚本可以接收参数并生成相应的二维码图像。PHP QR Code库...

    PHP仿宝鸡第一人才网(骑士CMS内核,可生成HTML)

    内核可能包含了用户管理、权限控制、模板引擎、缓存机制等一系列核心组件,开发者可以基于这些组件快速构建出复杂的功能模块,如招聘会管理、职位搜索、用户注册登录等。 在实际应用中,PHP仿制的“宝鸡第一人才网...

    PHP程序加速探索之缓存输出

    当然,这只是PHP缓存技术的一个基础应用,实际开发中还可以结合其他缓存策略,如Memcached、Redis等,以及更高级的框架如WordPress的WP Super Cache插件,Laravel框架的Cache服务等,来实现更高效的内容缓存和页面...

    Php mysql ajax 实现留言本

    4. **生成HTML**:PHP可以动态生成HTML代码,将从数据库获取的数据呈现给用户。 **二、MySQL** MySQL是关系型数据库管理系统,用于存储和管理留言本中的数据。在这个应用中,你需要创建一个数据库和表格来存储留言...

    PHP工具组件ezcomponent

    ezcomponent由ez Publish项目团队开发,ezPublish是一款知名的开源内容管理系统,它充分利用了ezcomponent的优势,从而实现了强大的功能和卓越的性能。 **ezcomponent的主要特点** 1. **模块化设计**:ezcomponent...

    js+php+html自动生成文件系统

    在构建一个基于“js+php+html”的自动文件系统时,我们需要理解这三种技术的核心功能以及它们如何协同工作。这个项目旨在创建一个交互式的、动态的文件管理系统,用户可以通过网页界面进行文件的浏览、上传、下载和...

    php_PHP在线生成带LOGO图标的二维码.zip.zip

    2. **PHP生成二维码库** PHP中常用的二维码生成库有:`PHP QR Code`、`Endroid QR Code`、`phpqrcode`等。这些库提供了简单易用的API,允许开发者自定义二维码的大小、颜色、错误校正级别等。 3. **PHP QR Code库...

    基于PHP的Tun2 php 企业网站管理系统(可生成静态html).zip

    【标题】中的“基于PHP的Tun2 php 企业网站管理系统(可生成静态html)”表明这是一个使用PHP语言开发的企业级网站管理系统,具有静态HTML页面生成的功能。这样的系统通常用于提高网站的加载速度和SEO优化,因为静态...

    php生成其它语言(phpfile)(1).zip_countz66_php_talkz7z

    总结来说,"php生成其他语言"这一主题涵盖了许多关键的PHP技术,包括基本的PHP语法、文件操作、模板引擎的使用、国际化支持以及Web开发中的最佳实践。通过深入学习这些知识点,开发者可以构建出高效、可扩展且易于...

    PHP名片系统源码.zip

    PHP文件中可能会包含控制器(Controller)来协调各个组件,模型(Model)来封装数据操作,视图(View)来生成响应。 4. **数据库设计**:在"card-master"中可能有一个配置文件(如config.php)用于设置数据库连接...

    模仿微信朋友圈界面功能的php的程序(前端+后端).zip

    总的来说,这个压缩包提供的程序是一个全面的社交功能实现,涵盖了从用户交互到数据存储的整个流程,是学习和实践PHP Web开发的宝贵资源。开发者可以通过研究这个项目,提升自己在Web开发中的技能。

Global site tag (gtag.js) - Google Analytics