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 扩展,提供代码和数据缓存功能。 - 由国内开发者开发,在国内拥有较高的使用率。 #### 八、使用缓存时易忽视的问题 1. **何时使用缓存:**一般建议在完成基本的系统架构设计后再考虑引入...
在这个主题下,我们将深入探讨PHP模板的原理、常用的PHP模板引擎以及如何通过PHP生成静态HTML页面。 1. **PHP模板的基本概念** PHP模板是一种编程范式,允许开发者用PHP代码嵌入HTML,用于动态生成网页内容。它的...
这个类可能包括生成静态HTML、管理缓存、处理URL重写以及与数据库交互来获取动态数据等功能。 当我们谈论“静态化”时,我们指的是将动态生成的页面转化为静态HTML,这样用户在后续访问时就不需要再经过服务器的...
标题提到的“把php生成静态(html)页面程序类.zip”是一个压缩包,其中包含了一个PHP类,用于将动态生成的PHP页面转换为HTML静态文件。这一过程通常被称为静态化。 首先,我们来看PHP动态页面和静态HTML页面的区别。...
田字格笔顺字帖在线生成器是一款基于PHP开发的应用,它允许用户通过网页界面自动生成含有正确笔顺的田字格字帖。这个源码项目涵盖了9574个常用的汉字,为学习者提供了方便的工具来练习汉字书写,尤其适合初学者和...
本教程将深入探讨如何在Yii框架下利用PHP生成二维码。 首先,让我们了解一下Yii框架。Yii是一个高性能的、基于组件的PHP框架,适用于开发Web 2.0应用。它提供了一系列强大的特性,如MVC(模型-视图-控制器)架构、...
标题中的“php_memcache.dll”是指PHP的一个扩展模块,它允许PHP应用程序与Memcached缓存系统进行交互。Memcached是一个高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高Web应用的性能。在高流量的网站...
GD库是PHP的标准组件,用于处理JPEG、PNG、GIF等多种格式的图像,而Imagick库则提供了更高级的功能,包括对更多图像格式的支持和更多的图像处理操作。 2. 图像尺寸计算:自动缩略图的核心是确定新尺寸。这可以通过...
本文将深入探讨如何使用PHP生成二维码,以及与Redis缓存服务的集成。 首先,我们关注的是"PHP生成二维码的接口文件"。这意味着我们要创建一个PHP脚本,该脚本可以接收参数并生成相应的二维码图像。PHP QR Code库...
内核可能包含了用户管理、权限控制、模板引擎、缓存机制等一系列核心组件,开发者可以基于这些组件快速构建出复杂的功能模块,如招聘会管理、职位搜索、用户注册登录等。 在实际应用中,PHP仿制的“宝鸡第一人才网...
当然,这只是PHP缓存技术的一个基础应用,实际开发中还可以结合其他缓存策略,如Memcached、Redis等,以及更高级的框架如WordPress的WP Super Cache插件,Laravel框架的Cache服务等,来实现更高效的内容缓存和页面...
4. **生成HTML**:PHP可以动态生成HTML代码,将从数据库获取的数据呈现给用户。 **二、MySQL** MySQL是关系型数据库管理系统,用于存储和管理留言本中的数据。在这个应用中,你需要创建一个数据库和表格来存储留言...
ezcomponent由ez Publish项目团队开发,ezPublish是一款知名的开源内容管理系统,它充分利用了ezcomponent的优势,从而实现了强大的功能和卓越的性能。 **ezcomponent的主要特点** 1. **模块化设计**:ezcomponent...
在构建一个基于“js+php+html”的自动文件系统时,我们需要理解这三种技术的核心功能以及它们如何协同工作。这个项目旨在创建一个交互式的、动态的文件管理系统,用户可以通过网页界面进行文件的浏览、上传、下载和...
2. **PHP生成二维码库** PHP中常用的二维码生成库有:`PHP QR Code`、`Endroid QR Code`、`phpqrcode`等。这些库提供了简单易用的API,允许开发者自定义二维码的大小、颜色、错误校正级别等。 3. **PHP QR Code库...
【标题】中的“基于PHP的Tun2 php 企业网站管理系统(可生成静态html)”表明这是一个使用PHP语言开发的企业级网站管理系统,具有静态HTML页面生成的功能。这样的系统通常用于提高网站的加载速度和SEO优化,因为静态...
总结来说,"php生成其他语言"这一主题涵盖了许多关键的PHP技术,包括基本的PHP语法、文件操作、模板引擎的使用、国际化支持以及Web开发中的最佳实践。通过深入学习这些知识点,开发者可以构建出高效、可扩展且易于...
PHP文件中可能会包含控制器(Controller)来协调各个组件,模型(Model)来封装数据操作,视图(View)来生成响应。 4. **数据库设计**:在"card-master"中可能有一个配置文件(如config.php)用于设置数据库连接...
总的来说,这个压缩包提供的程序是一个全面的社交功能实现,涵盖了从用户交互到数据存储的整个流程,是学习和实践PHP Web开发的宝贵资源。开发者可以通过研究这个项目,提升自己在Web开发中的技能。