我的做法:
1、URL REWRITE,自动将"xxx.com/111/222/333.html"=>"xxx.com/app/yyy.php?par1=111&par2=222&par3=333"
2、对这些动态页面进行缓存

解决方案 »

  1.   

    REWRITE这个我知道。。现在我运行在IIS下面,暂时不那么做。。
    只能是一个一个的生成静态页存放在服务器上。主要是想了解一下用ob_get_contents()有没有快速的方法,你们是不是和我一样?
      

  2.   

    IIS一样可以REWRITE ...
    我是不喜欢生成静态页的办法,感觉太死板了,个人爱好
      

  3.   

    小康,没有办法呀。我领导这么要求的,一定要生成 静态,说是有助于搜索引擎收录啦。
    所以我不得不这么做了。另外IIS怎么设置REWRITE?
      

  4.   

    /usr/local/php/bin/php /home/wwwweb/abc.php > /home/wwwweb/abc.html
    可以用exec()函数写程序
      

  5.   

    如果通过web访问一定会慢的
    http://www.abc.com/makepage.php?p=abc.php
      

  6.   

    生成速度慢,不过用户访问HTML速度快,也值得!
      

  7.   

    那就是说我的方法没有错喽。
    我以为我你们还会有其它快速的方法怒。其实我慢也就慢在批量生成的时候。一条记录生成并不会慢。。
    在前台是看不出来的,主要是后台控制重新生成的时候啦。不过奇怪的是我领导给我看了一个ASP的静态网站,后台生成速度是飞快呀,不像我用的这么慢。。所以奇怪向大家请教下喽。
      

  8.   

    $ofun->putfile( $outfile , $content );//静态输出
    //echo $content;//查看输出静态文件内容(测试用)
    直接输出$content不行吗
    //header( "location: ".$outfile );//转向到静态批量生成时候,我不知道你用什么模板
    一般用模板替换后输出,直接用一个循环就可以了
    速度也很快的。几百页几秒可以完成了
      

  9.   

    可爱钟用的大概是phplib模版吧?在以前的贴子里提起过...可能是模版的问题,以前我也用phplib,现在在改smartTemplate,等比较出个结果来的时候,我说一下就是了
      

  10.   

    $ofun->putfile( $outfile , $content );//静态输出
    我的这个函数就是直接输出静态文件的。。我用的是PHPLIB的。输出的时候我是循环访问每个动态页面,我这些动态页访问一次就会更新一次静态页面的。
    smartTemplate有缓存的,会快很多吧。这个不是模版的问题吧。。和方式有关系。
    比如我现在要生成首页--那就访问一下我的域名:http://www.abc.com
    这样子肯定是慢的。。能改种方式直接在服务器上转存成静态就会快很多。大家的招吗?
      

  11.   

    把php输出写到静态的html上,然后再浏览它。
      

  12.   

    可爱钟...你是要访问后才能够生成静态?访问你的http://www.abc.com应该是一个生成静态的php文件,在这个文件的最后,你使用了类似header转到生成的静态页,是这样吧?我是这样处理的.在数据库里就有相对应这条资料的静态页面的地址,批量生成(主要是用于整体网站改版)的时候,直接就重新写出新的静态页面.这样可能要快一点.
      

  13.   

    快刀说的就是。我就是这样子做的,访问动态PHP页,就能生成对应的静态页面,然后转向。因为我里面有些是动态页面的,并不是纯静态的站点。。
    我是根据动态地址有规律的生成静态页面。所以知道动态地址通过换算就可以知道静态地址了。问题是我用访问方式来生成静态的,我觉得这方式慢了。
    基于我现在的静态方式,是不是可以找到另外一种静态生成快速的方法?
    我主要是想和大家讨论这个。快刀说的从数据库读出对应资料,这个在生成静态的时候肯定要这样子做的。
      

  14.   

    linux下写个crontab定时运行一下你的php程序生成静态页
    windows下可以用计划任务达到同样的效果如果有人手,也可以安排一个人在更新某些页面后执行一下啊
      

  15.   

    可爱钟同学...个人意见是,你可以把访问动态PHP页面的这一个工作省掉呀.如果我理解的不错,你访问100个页面,才生成100个静态,那自然比不上不用访问页面,直接生成100个静态来的那么快了.至于说有的页面不是静态的,有的静态页面不需要一起生成,这个在程序里过滤一下就是了.具体页面的地址,直接在数据库里保存,也不要进行什么换算了.我就是这么处理的.个人看法,呵....
      

  16.   

    哈哈。对啊。就是怎么不用访问页面来产生静态?
    我现在用ob_get_contents()必须要访问呀。难道我用的方法不对?静态地址和动态地址通过换算这个我想应该没有问题,这个灵活性好一些。这个只有在产生静态的时候才进行的。
      

  17.   

    由于你的静态页面是有选择产生的,并不是真正意义上的静态页面。他不是通过连接直接访问的。
    而只是缓存文件,于是
    header( "location: ".$outfile );//转向到静态
    就没有必要了,而应该是
    include ( $outfile );//载入缓存注意,location 动作是需要通过浏览器完成的,访问一个页面要使用两次http请求当然就要慢很多了
      

  18.   

    我有一个挺好的想法
    就是你每个页面用一个javascript
    再次访问服务器,生成下一次将要生成的内容
    如果有了就不生成了
      

  19.   

    哈哈。对啊。就是怎么不用访问页面来产生静态?
    我现在用ob_get_contents()必须要访问呀。难道我用的方法不对?*****可爱钟同学...不用访问当然可以产生静态.一个不算是例子的例子
    表里有100条记录(你的数据一般总是放在表里,那些1万年不变,如企业简介那个不算),现在你需要生成静态页面.
    $sql = "select .....";
    $query=mysql_query($sql);
    while(...)
    {
    //在这里就是一条一条的内容了//在这里读一条记录生成一条静态}就是这样了.当然,这里面要考虑到一次不能生成太多条,还是一般不是每次都生成库里所有的数据,不过,这都是小节了.用ob_get_contents()应该不会影响速度.
    个人看法...呵...
      

  20.   

    唠叨,谢谢你的提醒,你说的这里确实有一个多余的时间损耗。但我一定要用LOCATION来转向一下,因为有时候会访问到动态页面,转过去之后地址栏中就变成静态的html页面了,要不然还是动态,领导这样子要求也没有办法。也就是说现在我的静态和动态页面是互通滴,静态中有动态,动态访问不是处理需要都会直接转向到静态去了。uuq(杜牧) 你的想法我懂了,多谢了。有可能的话我会付注实践的,这个一定还要加个更新时间的设置吧。嘿嘿。其实有点儿像STAMTTEMPLATE的缓存更新了,我说的没错吧。lzkd(浪子快刀) 我批量产生静态的时候就是你这样子的。我的问题就是唠叨提到的,可能是多损耗了一半时间,所以显得特别慢。哦,对了,还有一个服务器反应的时间和产生静态的时间也有关系了,网络不好的话不是不能产生静态了?怎么问题越来越多呀。。
      

  21.   

    晕..不明白...如果按这么来,怎么会有损耗呢?为什么非要"LOCATION来转向一下,"....除非..你根本就是为了产生静态页而产生静态页,并不是真的需要产生静态..大概是你的老板听说静态可以增加搜索排名...才......不然的话,怎么解释...."也就是说现在我的静态和动态页面是互通滴,静态中有动态"...天..可爱钟你也太可怜了...
      

  22.   

    是的“静态可以增加搜索排名”,也容易被搜索引擎收录
    但绝不是你这个样子的
    你的页面总是要用http://host/page.php?param=val或http://host/page.php/param/val这样访问的,尽管可能被转向到http://host/xxx/1234.htm,但是这个url并不为蜘蛛识别
    只有在页面中出现的url才会被收录蜘蛛也担心陷入你的陷阱的
      

  23.   

    呵呵。不是老板,是主管啦。
    他不懂PHP的。要求这么做我也没有办法。都是混口饭吃的。唠叨,那生成的静态页面就会在那里了。访问的时候还是在静态之间相互跳转的,只有少部分是动态跳到静态。
      

  24.   

    lzkd(浪子快刀) 我的站点以静态出现的。在一些处理控制的时候就用到动态,从这些动态页面转到静态的时候,其中连接的也是动态页面,只是系统中发现此动态 页面有静态的时候就会更新静态并自动转向。
    mrshelly(Shelly)我用的是PHPLIB模版处理网站的。
      

  25.   

    奇怪并且复杂的功能.....可爱钟同学,你把网站贴出来,让我们也看看,学习一下吧,也了解一下,为什么你的主管需要这么奇怪的东西又及,如果这样的话,我相信,需要使用这么动态转向到静态的页面应该不是很多,又何必在乎生成速度呢?又又及,刚才试了一下smartTemplate的静态生成,发现比phplib快许多.要不?可爱钟同学,你也改一下模版用?
      

  26.   

    类似于www.made-in-china.com
    不过我觉得上面这个网站是利用REWRITE技术的,我主管不相信我说的,只有听他的了,做到我现在这样子了。。
      

  27.   

    hehe有点意思..挂上去后,通知一下大家哈...也看看这么复杂的东西是怎么个样子我现在在把公司整个网站用smartTemplate换结构重写..累死了....不过,觉得这样挺有意思,所以..也建议你换
      

  28.   

    哈哈。我也想换呀。这等于重新写一次代码似的。
    时间上不允许呀。。现在得到一个消息。
    我的领导说,搜索引擎搜索页面是从上到下,从左到右的,都被搞迷糊了大家跟我说一下,到底蜘蛛是怎么工作的??
    在我看来,最重要的的关键字就在html中的title和content里
      

  29.   

    我的领导说,搜索引擎搜索页面是从上到下,从左到右的,都被搞迷糊了
    ---------------
    哈哈,你们领导挺可爱的keaizhong(可爱钟)(温州的PHPER)(19801010)
      温州什么公司呢?
      

  30.   

    偶一直在用smarty这个东西不错。呵呵。
    ---
    至今还不会用phplib,惭愧ing。
      

  31.   

    莫有办法了,他是领导听他的呗,现在做得我一点儿信心都没有了。
    这个项目本来我了上手就觉得没有什么大的作为的。但是现在做到一半又不能走。
    没有办法呀,要不就对自己惨忍点,否则就只有对别人惨忍了。phplib 很简单的,不用一个晚上你就可以搞定。我会PHPLIB还不会SMARTY呢。都一样,大家喜欢的东西不一样,再就是看你先接触哪个了。
      

  32.   

    1、smartTemplate与phplib templae的模板描述是一致的。只是前者多了流程控制,但这并不是必要的。
    2、smartTemplate的用户程序比phplib templae的简单,修改起来很容易
    3、你可以在smartTemplate中添加与phplib templae同名的方法作为过渡,这样用户程序也就不需要修改了
      

  33.   

    有点意思.那,个人建议,对别人残忍好过对自己残忍...这个我赞成了。。哈哈。。等待中温州这边做PHP少呀。
    有好机会 当然要对别人惨忍了。哈哈我们的讨论好像偏离了主题了。我就当两三个问题来好了。到时候我会加分的。多谢各位了。我们提到这两个模版,再顺便问个问题了。
    置顶的neatTempate,好像集成了PHPLIB和smartTemplate的诸多优点,大家觉得如何?
    一直在用PHPLIB,用到现在发现有些不顺手了,正想寻找一个小巧的模版,看好smartTemplate的时候neatTemplate出现了,个人发现挺不错的,大家给评评。
      

  34.   

    一直没有注意到“置顶的neatTempate”,不过连接打不开。所以无从评论
    曾测试过多种模板引擎,最终多放弃了。还是使用自己开发的,只需在html标记中设一个属性就可以了
    通常搜索引擎搜索页面是:
    1、检查meta标记
    2、分析并跟踪页面中的url当发现是动态url时多半就不跟踪了,因为动态页面的内容会变不宜分类。
    当然如果你已经付费了,动态连接也是会被收录的