php 页面静态化-PHP memcache页面静态化,页面静态化利用memcache的思想来实现

最近由于之前项目的需要,需要对一个PHP项目进行优化。 在优化的同时,突然想尝试一下使用memcache来实现静态页面的想法。 会有效果吗?

虽然当你访问一个页面时该页面是静态的php 页面静态化,但由于这个页面很少发生变化,所以你可以考虑为这个页面生成一个静态的html并保存。 当你再次访问时,将直接访问静态html。 这样,网站的响应速度就会得到很大的提高,整个网站的并发和性能都会得到优化。

动态生成 HTML 需要使用 PHP 的 ob_start() 和 ob_get_contents() 函数。 其实这个过程就是将解析后的HTML从浏览器的缓存中取出,保存为HTML文件。

那么如果我们使用memcache来实现会是什么样子呢? 首先我们取出一个页面唯一的URL地址(当然,在我们之前的写法中,每个函数只实现一个功能),通过md5作为唯一的key加载到memcache缓存服务器中。 。 下次访问时,如果直接memcache中有缓存,如果没有正常解析,则将结果存储到memcache服务器中。

下面是具体实现:

当一个已经成型的项目摆在你面前时,如何优化这个项目? 您收到的程序可能已加密,或者项目文件可能非常大。 如果我们一一查看源代码,去修改往往是不现实的。 我的想法是降低中间层。 这里我们将项目入口文件改为index2.php,重建一个入口文件(index.php)以及优化的memcache中间层。 (index1.php),使用新的入口文件引入index1.php和index2.php,添加缓存机制,memcache缓存所有访问链接(采用页面静态化的思想),将页面静态化是一个非常好的方法解决方案是使用memcache来实现它,但是有一个缺点。 这里,url用作md5作为唯一的key。 如果存在这个url有多个不同页面调用的情况,就会出现一些问题。 在其他情况下,应该注意的是,可以使用外部参数来防止单个 URL 被缓存。 不过这些方法对ajax用处不大(这是我自己的理解)php 页面静态化,因为ajax获取的是参数传递。 该过程中间并没有经过浏览器的缓存,所以我们无法获取到ajax缓存。

php 页面静态化_php伪静态_java生成静态html页面

index1.php是原项目的入口文件

php Define('url','#39;.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]);

类 memcacheHtml{

php 页面静态化_java生成静态html页面_php伪静态

公共$内存缓存;

公共$时间= 10;

公共 $urlArray = 数组();

函数 memcacheGet(){

$this->memcache = new memcache();

php 页面静态化_java生成静态html页面_php伪静态

$this->memcache->connect('127.0.0.1',11211) 或 dir("error __FUNCTION__");

if($this->memcache->get(md5(url))){

回声 $this->memcache->get(md5(url));

//$this->memcacheFlush();

返回真;

php伪静态_php 页面静态化_java生成静态html页面

返回假;

函数 memecacheSet($data){

if(in_array(url,$this->urlArray)){

返回真;

$this->memcache = new memcache();

java生成静态html页面_php伪静态_php 页面静态化

$this->memcache->connect('127.0.0.1',11211) 或 dir("error __FUNCTION__");

$this->memcache->set(md5(url),$data,MEMCACHE_COMPRESSED,$this->time);

//回显$数据;

函数 memcacheFlush(){

$this->memcache->flush();

索引2.php

事实上,memcache是​​一个简单的内存服务器。 正常使用时,经常会加载数据查询结果。 当短时间内频繁发出请求时,可以快速响应,从而减轻数据库的压力。 这里的这些方法只是视图的实现。 我相信会有更好的方法来提高回复率。 比如我们还可以利用Opcodes来缓存PHP的中间代码,防止PHP的多次解析,从而提高网站的响应速度。 但我认为疗效并不算太大,更大的疗效是优化sql语句、表结构、缓存查询结果等(仅从我优化的项目来看,仅代表我自己的观点。) 。