一种机制,关于网站静态

该昵称很风骚 2010-02-06 11:59:26

function index()
{
ob_start();
$this ->_executeView("view_index.html",$this ->_get_Data());
$cons= ob_get_contents();
ob_end_clean();
$objectPage='Index.html';
$fp=fopen($objectPage,"wb") or die("静态生成时打开文件".$objectPage."时出错");
fwrite($fp,$cons); #把HTML代码写入静态文件中!
fclose($fp);
}

function _get_Data()
{
$t = time();
return $t;
}


我大概用这一种方式生成静态页面,连index也是,我现在想让他这样的:每次加载Index.html的时候,程序可以在加载完Index.html之后,又自动把Index.html重写一次,那么下次浏览Index.html的时候,看到的就和前一次的数据不同。

请大伙儿指点指点,给个思路也行。
...全文
123 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
deninghe 2010-02-07
  • 打赏
  • 举报
回复
10分、、、
该昵称很风骚 2010-02-07
  • 打赏
  • 举报
回复
呵呵,谢谢楼上,这才知道smarty中还有这个东东,结贴咯
helloyou0 2010-02-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiongmzh 的回复:]
不是onload="load()"的问题,我的意思是:
HTML code<htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type" content="text/html; charset=utf-8"/><title>无标题文档</title><style></style><script></script></head><body><!--<body onload="load()">-->
现在是{$a|date_format:"%H"}时{$a|date_format:"%M"}分{$a|date_format:"%S"}秒<div>
ddddddddddddddd</div></body></html>

如果模板中是这些内容,在php代码的$cons= ob_get_contents()后面dump($cons)时候,没问题,可以把内容输出,但是用下面的,就显示空白,说明出了问题:
HTML code<htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type" content="text/html; charset=utf-8"/><title>无标题文档</title><style>
body{font-size:14px; color:#FF0000;}</style><script>function load()
{
alert(111);
}</script></head><body><!--<body onload="load()">-->
现在是{$a|date_format:"%H"}时{$a|date_format:"%M"}分{$a|date_format:"%S"}秒<div>
ddddddddddddddd</div></body></html>
貌似style标签和script标签里不能添加任何东西,这倒没多大关系,可以把css和js写在外部文件中,我只是想不通这个是为啥
[/Quote]

因为你的style和script里有{和}
把它们放在{literal}和{/literal}中即可
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xiongmzh 的回复:]
引用 8 楼 coolesting 的回复:
那些门户网站相当于织梦cms,  发布内容时直接生成html, 有修改时也直接操作html,

发布的时候直接生成,那以后要是有改动,麻烦死了
就拿新闻页来说吧,每个新闻页上都有其他模块,如果纯静态,这些本来可以实时更新的模块岂不是永远定格在了页面生成的时候,这样,用户体验度不够友好
[/Quote]

那不是绝对的用法, 当然根据需求变动而作出修改。
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
个人建议, 只供参考

1. 在内容有修改时对模板更新

2. 设置模板限定时间, 超期再自行更新


局布的变化用ajax处理, 相比你的提议,这样尽可能少地对模板操作
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 coolesting 的回复:]
那些门户网站相当于织梦cms,  发布内容时直接生成html, 有修改时也直接操作html,
[/Quote]
发布的时候直接生成,那以后要是有改动,麻烦死了
就拿新闻页来说吧,每个新闻页上都有其他模块,如果纯静态,这些本来可以实时更新的模块岂不是永远定格在了页面生成的时候,这样,用户体验度不够友好
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
url用的伪静态
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
浏览的目录和程序的目录是分开的
就像一些框架,有个入口文件
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiongmzh 的回复:]
好多大的门户网,你看他的新闻页,绝对不是纯动态的,虽然从网址上看是静态,我觉得他们可能就用了这样的方法
[/Quote]

那些门户网站相当于织梦cms, 发布内容时直接生成html, 有修改时也直接操作html,

局布变化, 用ajax处理
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
你的url是怎样? 直接访问index.html, 还是访问index.php时通过模板拿缓存内容
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
好多大的门户网,你看他的新闻页,绝对不是纯动态的,虽然从网址上看是静态,我觉得他们可能就用了这样的方法
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 coolesting 的回复:]

可以, 但流量大的时候, 读一个页面要请求两次, 会不会搞死服务器呢 ?
[/Quote]

我用session记录每一次的请求时间,那么下次请求的时候,就判断下,我想让他每过半个小时或者1个小时才发生动作
brilliant_fgh 2010-02-06
  • 打赏
  • 举报
回复
多给个文件例如Index2.html,
先把Index.html的内容写到Index2.html,
然后再把新的内容写到Index,.html,
这样就知Index2.html的内容是上一次的.
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
这就是“异步”吧,我想到了,用Ajax,在body里用onload触发

-----------------------------------------------------------------------

可以, 但流量大的时候, 读一个页面要请求两次, 会不会搞死服务器呢 ?
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
不啊,我刚想到的,我的意思是,整个页面加载完之后,才重新生成,这样,用户根本该觉不到页面其实已经重写了一次了,因为加载完成之后做动作不会影响到页面反应的速度

这就是“异步”吧,我想到了,用Ajax,在body里用onload触发

大家觉得呢
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
时间1 = 读html + 加载数据再生成一次html

时间2 = 直接加载数据

时间1 > 时间2

你样做不是浪费时间吗?
godzeye 2010-02-06
  • 打赏
  • 举报
回复
mod-rewrite伪装我觉得更方便
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
把 "<style>body{font-size:14px; color:#FF0000;}</style>" 和
"<script>function load(){alert(111);}</script>"

写到<body>标签里, 看dump($cons)能不能正常输出, 如果不能, 我想你就应该知道错在那里了
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
估计是我这个函数的问题,_executeView
该昵称很风骚 2010-02-06
  • 打赏
  • 举报
回复
不是onload="load()"的问题,我的意思是:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>

</style>
<script>

</script>
</head>
<body>
<!--<body onload="load()">-->
现在是{$a|date_format:"%H"}时{$a|date_format:"%M"}分{$a|date_format:"%S"}秒
<div>
ddddddddddddddd
</div>

</body>
</html>


如果模板中是这些内容,在php代码的$cons= ob_get_contents()后面dump($cons)时候,没问题,可以把内容输出,但是用下面的,就显示空白,说明出了问题:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
body{font-size:14px; color:#FF0000;}
</style>
<script>
function load()
{
alert(111);
}
</script>
</head>
<body>
<!--<body onload="load()">-->
现在是{$a|date_format:"%H"}时{$a|date_format:"%M"}分{$a|date_format:"%S"}秒
<div>
ddddddddddddddd
</div>

</body>
</html>

貌似style标签和script标签里不能添加任何东西,这倒没多大关系,可以把css和js写在外部文件中,我只是想不通这个是为啥
加载更多回复(3)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧