1. 如何让thinkphp生成全静态页面
可以使用php的ob缓存来实现静态页面的生成。
比如:
你原本要输出a.php页面的内容,但是这个是php的动态文件,是要经过处理的,
因此,你在该文件的尾部(在业务都处理完了的地方),开始ob缓存(ob_start();),
然后将缓存存入到一个变量($content = ob_get_contents();),最后再将该变量保存到
静态的html文件中(file_put_contents('/a.html','$content');)就可以了。
2. PHP网站如何实现网页伪静态或静态
伪静态 实际是服务器的设置,php实现静态,就是用php生成静态页,可以考虑用php的smarty 模板引擎
3. thinkphp发布文章怎样生成静态页面呢
'HTML_CACHE_ON' => true, // 开启静态缓存
'HTML_CACHE_TIME' => 60, // 全局静态缓存有效期
'HTML_FILE_SUFFIX' => '.shtml', // 设置静态缓存文件后缀
'HTML_CACHE_RULES' => array( // 定义静态缓存规则
// 定义格式1 数组方式
'静态地址' => array('静态规则', '有效期', '附加规则'),
// 定义格式2 字符串方式
'静态地址' => '静态规则',
)
手册里面讲解的很详细,去看看就明白了
4. 如何用PHP输出静态页面
用PHP输出静态页面有2种方法
一种是利用模板技术,另一种是用ob系列函数。两种方法,看起来都差不多,但是实际上,却是不同的。
第一种:利用模板
目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。
它们每一种模板,都有一个获取输出内容的函数。
我们生成静态页面的方法,就是利用了这个函数。
用这个方法的优点是,代码比较清晰,可读性好。
这里我用smarty做例子,说明如何生成静态页
<?php
require('smarty/Smarty.class.php');
$t=newSmarty;
$t->assign("title","HelloWorld!");
$content=$t->fetch("templates/index.htm");
//这里的fetch()就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了
$fp=fopen("archives/2005/05/19/0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>
第二种方法:利用ob系列的函数
这里用到的函数主要是ob_start(),ob_end_flush(),ob_get_content(),
其中ob_start()是打开浏览器缓冲区的意思,
打开缓冲后,所有来自PHP程序的非文件头信息均不会发送,
而是保存在内部缓冲区,直到你使用了ob_end_flush().
而这里最重要的一个函数,就是ob_get_contents(),
这个函数的作用是获取缓冲区的内容,相当于上面的那个fetch(),
道理一样的。代码:
<?php
ob_start();
echo"HelloWorld!";
$content=ob_get_contents();//取得php页面输出的全部内容
$fp=fopen("0001.html","w");
fwrite($fp,$content);
fclose($fp);
?>
5. thinkphp怎么生成静态页面 还有发布的文章也是
你先搜下不就行了....
1、在入口文件index.php文件中定义生成静态页面的文件位置
define('HTML_PATH','./htm');
2、在根目录的config文件夹中的config.php配置静态页面的类型,设为 html
'HTML_FILE_SUFFIX' => '.html',// 默认静态文件后缀
3、在“Tpl/default/”目录中新建一个Index的文件夹,文件夹下面新建一个index.html的模板,
模板里面内容为:这是生成静态页例子
4、控制器IndexAction.class.php中的代码
class IndexAction extends Action{
publicfunction index(){
$this->buildHtml('1',HTML_PATH.'/','index','utf8');//注意:这里的utf8不能写成utf-8
$this->display();
}
}
解释:
这里的buildHtml是thinkphp内置的函数,这里的意思是:
将index的模板文件生成utf8编码格式的静态网页,该文件名为1.html,存在于根目录的htm文件中
该函数有5个参数,具体如下:
buildHtml($htmlfile,$htmlpath,$templateFile,$charset,$contentType='text/html')
参数:
$htmlfile生成的静态文件名称
$htmlpath生成的静态文件路径
$templateFile 指定要生成静态的模板文件
$charset生成静态文件的编码格式
$contentType生成静态文件的类型
6. phpcms怎么生成静态网站
如果是合格的phpcms模板本身就是带标题的。 你打开pc原模板的header.html,把title的代码复制到你的模板就行了。
运行CMD后使用dir命令,加一个/b,会生成一个简单的文件名列表,不包括其它信息,这种方法可以用来提取文件夹和文件名列表。比如要提取D盘下ABC文件夹里的文件名列表:dir d:\abc /s /b >d:filelist.txt这样就会在D盘生成一个filelist.txt的文本...
先在扩展里面设置URL规则, 然后在栏目设置里面设置 这些都可以根据需求设置
首页第一步你要编辑自己的静态规则,如果对系统自带的满意的话可以忽略。 即找到扩展——>URL规则管理,再修改相应的生成静态规则的规则,如果不想在原有的基础上修改,可以自己添加,这个很简单,生成什么样的目录你自己说了算,看示例就会 了。 ...
你好! 手机门户没有生成静态页面一说的,应该是php写的动态页面。 现在都是html5的时代了,建议开发html5响应式网站,兼顾PC、平板、移动显示效果。 希望我的回答能够帮到你,望采纳
我来回答吧:) 1. 进入后台-->网站频道 2.到这个时候,你网站的所有频道都会在"右窗口"显示出来. 3.找到你需要修改的频道,点击其右侧管理操作的"修改"链接... 4.转入的这个页面就是此频道的详细信息,分别有"基本信息"."权限设置"."上传选项"."生成...
你好! 生成了很多多余的目录可能跟你的内容页URL规则设置有关系。如图: 个人觉得phpcms生成静态文件是多余的,完全可以用伪静态来实现。易于维护和管理,实现也较容易。 希望我的答案对你有所帮助,记得采纳哦~
更新URL更新缓存这是phpcms使用问题的万能药膏,我问了很多不同的问题,都是这样的回答,并且都不能解决问题
后台-内容-内容管理-栏目管理-选择某个栏目-修改-生产html选项 勾完以后更新一下栏目缓存
两个都可以访问的,生成静态后,访问的静态地址页面,服务器就不会去执行数据库; 比如,你有10篇文章,动态的话,你每访问一篇文章都要在数据库里去找出这张篇文章,而静态的话,10篇文章就是10个静态页面,不用查找数据库,直接显示的。 这样...如果还有不明白的话,你也可以去后盾人平台看看php基础教学视频看看,也是不错的选择,希望能帮到你,给个采纳吧谢谢(^_^)
7. php如何实现网页静态
一、静态化的优点:
1有利于搜索引擎收录网站页面的信息:搜索引擎更喜欢静态的,更变于抓取,搜索引擎SEO排名会更容易提高。
2静态网页化网页稳定
3可以提高网页加载速度
4减轻服务器负担,浏览器不需要频发调用数据库。
5数据库出错不会影响正常访问
二、伪静态
PHP伪静态:是利用Apache mod_rewite实现url重写的方法
改写访问地址,能够通过URL的PATHINFO模式来改动它。让它看上去更像一个静态页面。从而有更大的几率被搜索引擎抓取和收录,仅是对搜索引擎比较友好,伪静态化
三、纯静态化
纯静态化,就是生成HTML文件的方式,我们须要开启PHP自带的缓存机制,即ob_start来开启缓存。而且在ob_start之前不能有不论什么输出,否则运行失败,然后我们用ob_get_contents函数来获取缓存中的内容,该函数会返回一个字符串。第三个函数就是ob_end_clean,它用来清空缓存中的内容而且关闭,成功返回True,失败返回False。
<?php
if(file_exists("match.html") && (time()-filemtime("match.html"))<300)
{
//如果存在对应的静态文件,则直接访问
require_once("match.html");
}else{
//这里用数组来仿真数据库操作,现实一般都是操作数据库得到对应数据
$student = array("huangxing","chenyuwei",'xufei','zhangjingwen','xuepei');
ob_start();
//载入模板
require_once("muban.php");
file_put_contents("match.html",ob_get_clean());
require_once('match.html');
}
8. PHP怎么全站批量生成静态页面
这个要看你本身的程序具备不具备静态的功能,就像我的网站 http://www.gengtima.com 本身就有静态的功能,所以根本就不用考虑这个问题了。 国内比较好的静态程序,有dede、supersite等。
9. php程序如何批量生成静态页
在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直接显示,或者xhtml用css控制显示,或者生成xml用xslt显示,这些技术都不是难的,在这里我就浅显的说说生成html的方法.
有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间的判断,比方要在5分钟更新一次,可以记录上次更新的时间,和当前时间比较,如果大于
5
分钟
,读取数据库,更新换成,否则直接读取缓存数据,当然,缓存需要客户端用户激活的,只需一次.
ob_start()函数:打开输出缓冲区.
函数格式
void
ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
ob_get_contents
:返回内部缓冲区的内容。
函数格式:string
ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回
FALSE.
ob_get_length:返回内部缓冲区的长度。
函数格式:int
ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活,则返回
FALSE.
ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
函数格式:void
ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除
ob_end_flush:发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区
函数格式:void
ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)
ob_implicit_flush:打开或关闭绝对刷新
函数格式:void
ob_implicit_flush
([int
flag])
说明:默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用
flush()
文件写入:
int
fwrite
(
resource
handle,
string
string
[,
int
length]
)
fwrite()
把
string
的内容写入
文件指针
handle
处。
如果指定了
length,当写入了
length
个字节或者写完了
string
以后,写入就会停止,视乎先碰到哪种情况。
fwrite()
返回写入的字符数,出现错误时则返回
FALSE
。
相关参考官方网站:
文件参考
三、解决方案
思路:开启
ob_start缓冲,当已经调出数据的时候获取
ob_get_contents,然后生成静态页,ob_end_clean清除缓冲.ok,就这么来,来看一个例子(php+mysql的结合):
创建数据库:
CREATE
TABLE
`bihtml`
(
`id`
int(11)
NOT
NULL
auto_increment,
`szdtitle`
varchar(16)
NOT
NULL,
`szdcontent`
text
NOT
NULL,
PRIMARY
KEY
(`id`)
)
TYPE=MyISAM;
获取当前的ID,并导入模板:
ob_start();
$id=_POST['id']
if(!isset($id)&&is_integer($id))
{
@$db=new
mysqli('localhost','root','admin','bihtml');
$result=$db->fetch_one_array("select
*
from
szd_bi
where
id='$id'");
if(!empty($result))
{
$tmp->assign(array(
"Szdtitle",htmlspecialchars($result['titles']),
"Szdcontent",$result['titles']));
}
$tpl->display('default_1.tpl');
$this_my_f=
ob_get_contents();
//此处关键
ob_end_clean();
$filename
=
"$id.html";
if(tohtmlfile_cjjer($filename,$this_my_f))
echo
"生成成功
$filename";
else
echo
"生成识别";
}
}
//把生成文件的过程写出函数
function
tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if
(is_file
($file_cjjer_name)){
@unlink
($file_cjjer_name);
}
$cjjer_handle
=
fopen
($file_cjjer_name,"w");
if
(!is_writable
($file_cjjer_name)){
return
false;
}
if
(!fwrite
($cjjer_handle,$file_cjjer_content)){
return
false;
}
fclose
($cjjer_handle);
//关闭指针
return
$file_cjjer_name;
}
10. php生成静态页面问题
顾老兄上次问个CVS的问题,这次又问这个。长此以往,老兄你要成为“疑难杂症”专家啦。
你问的是实时更新,我们从这个角度出发来发散分析:
实现实时更新方法有以下几种:
1、纯动态页面,这种方式想必不用多说了吧。就是asp呀,php呀这些服务器语言进行实时更新的,这种方法没有更新时间差;
2、拟静态页面:这种方式是基于第1项的前提下,进行URL重写,这种方式也比较常见。
3、缓存页面:这种方式的特点是更新,但不实时,但也只是相对来说的,如果在对更新速度要求不是很高的特定要求下,也可变相地称之为实时更新;
4、静态页面重生成:(根据你的问题来看,核心问题就是这种,那我们就详细分析一下)网站页面采用了html纯静态页面的方式,但是在用户浏览页面时,是由php页面进行跳转来的,虽然进行了页面中转的过程,但是因为程序执行的代码很少、大量的页面内容并不需要重新查询数据库重新得来,所以总体效率还是最高的。那么如何实现呢,且看下方步骤:
1) 需要使用URL重写服务,这种重写服务其实只是一种过场,比如我们有一个链接是:www..com/88.html。
2)当有用户点击它的时候,由重写服务链接到特定的链接管理页面(link.php)
3)这个页面上传来的链接不用经过改造,直接使用,但是这个页面有一个主要的工作是查看更新标志位,也就是说,这个页面会对这个已经生成了静态页面的88.html数据库中的更新标志位进行检查
4)需要注意的一点是,这个标志位是数据库中事先进行过设定的,就是说,网站的每一个静态页面都有对应的这个数据库字段。
5)如果该标志位为0(是什么由设计员决定,只要有一个统一协议就好。)说明没有更新,直接显示,如果有更新,则链接到相应的php页面对该静态html页面重新生成。
6)如果有新留言或进行了某些后台页面更改操作后,将这个标志位置为1,然后呢?哼哼,谁在置了标志位后第一个浏览这个页面,服务器就会重新生成它,然后复原标志位。
这种方案比缓存方式的更新速度来得更快,可以应用在流量大、更新速度要求很高的网站上。当然,这种方案是从网站的设计之初,也就是框架设计的时候就已经开始“预谋”了。否则,要想在设计的中途改动,怕是要伤筋动骨的。
(以上过程是我个人采用的方式,未经论证、未经审核、未经批准、未经备案。晒到这里也希望有其它涉及过相关技术的朋友进行批评指正。小可不胜感激。)
5、html+ajax:这种方案用来解决 你这个问题也不错,如何实现呢,且看:
1)html大体框架页面生成了静态,也不用经常性地频繁重生成,然而在留言区加入ajax代码。
2)这个ajax代码负责留言区的显示任务、无刷新提交任务。
3)当用户点击www..com/88.html的时候,里面的ajax载入触发,到html_ajax.php页面去下载本页面的留言内容,然后写入前端页面。
这种方案在用户体验上相当不错,但个人总感觉它可能会对搜索引擎对留言区的收录会出现一些问题,但应该不会产生太大问题罢。
好了,以上方案临时构思,请大家批评指正。