当我们在创作一个产品的时候,我们对用户去如何排列标签来构建模板是不可预期的,可能这样,可能那样,单纯的生成编译文件然后使用ob_start缓冲输出实在不属于一种明智的做法,在我看来,存在以下俩个弊端:
1、将整个网页缓冲输出意味着要进行整个网页的内容输出存储
2、每个页面的数据库查询都会浪费资源,尽管数据库有缓存(虚拟主机环境呢,缓存可不够)
3、为了内容保险,每次只能生成一个页面(欧阳在做人才网就是这样做的)
既然存在弊端,那么缓冲输出未必是一个好的办法,也许上面的方法可能是最省事的但是对于产品来说,显然是大大的麻烦,最大的原因,就是使用者的水平不可预期,如果生成过慢,我想,使用者可能会投奔他处,这个时候,一个急速生成静态网页的方法就显得尤为重要了。
一个网页的内容页,除外一篇文章的标题、文章内容与其它的网页不同以外,其余全部都是相同的,这个时候,替换就出现在我的脑中,为什么我不将除外这些auto内容以外的东西将静态化呢。然后只是对auto内容进行一个替换即可,这样每次生成内容数据库连接次数和查询次数都可以最小化,我设置可以将这次要生成的一百条数据的数据先全部读取出来。
从模板到最终,我设定四层缓存:
第一层:将所有的标签循环解析出来的编译文件根据循环单独保存
第二层:将原来的标签循环替换为<cache>识别码</cache>后保存
第三层:将单独的编译全部都生成一遍实际的静态内容(不包括随页面而动的编译部分)
第四层:将非auto内容直接用静态内容替换掉,使之保存为最大化编译状态
当使用者生成静态的时候,根据cache识别码获取到编译内容生成静态内容直接替换,这样静态文件就可以生成了
当使用者使用动态模式的时候,直接读取最大化编译状态,然后将auto编译替换进去显示即可
这里问题来了,缓存更新问题,所以我又想了一下,可不可以cache保存到一个文件里面,不要第四层了,展示内容就像堆积木一样,更新缓存只要把那块删除就可以或者替换新的内容进去,以实现局部更新或全部更新
求教
1、将整个网页缓冲输出意味着要进行整个网页的内容输出存储
2、每个页面的数据库查询都会浪费资源,尽管数据库有缓存(虚拟主机环境呢,缓存可不够)
3、为了内容保险,每次只能生成一个页面(欧阳在做人才网就是这样做的)
既然存在弊端,那么缓冲输出未必是一个好的办法,也许上面的方法可能是最省事的但是对于产品来说,显然是大大的麻烦,最大的原因,就是使用者的水平不可预期,如果生成过慢,我想,使用者可能会投奔他处,这个时候,一个急速生成静态网页的方法就显得尤为重要了。
一个网页的内容页,除外一篇文章的标题、文章内容与其它的网页不同以外,其余全部都是相同的,这个时候,替换就出现在我的脑中,为什么我不将除外这些auto内容以外的东西将静态化呢。然后只是对auto内容进行一个替换即可,这样每次生成内容数据库连接次数和查询次数都可以最小化,我设置可以将这次要生成的一百条数据的数据先全部读取出来。
从模板到最终,我设定四层缓存:
第一层:将所有的标签循环解析出来的编译文件根据循环单独保存
第二层:将原来的标签循环替换为<cache>识别码</cache>后保存
第三层:将单独的编译全部都生成一遍实际的静态内容(不包括随页面而动的编译部分)
第四层:将非auto内容直接用静态内容替换掉,使之保存为最大化编译状态
当使用者生成静态的时候,根据cache识别码获取到编译内容生成静态内容直接替换,这样静态文件就可以生成了
当使用者使用动态模式的时候,直接读取最大化编译状态,然后将auto编译替换进去显示即可
这里问题来了,缓存更新问题,所以我又想了一下,可不可以cache保存到一个文件里面,不要第四层了,展示内容就像堆积木一样,更新缓存只要把那块删除就可以或者替换新的内容进去,以实现局部更新或全部更新
求教
解决方案 »
- mysql_fetch_row() 和mysql_fetch_array之间有什么区别?
- 菜鸟问题:mysql索引会自动随着表更新么?
- 关于两张表之间数据操作的问题,麻烦大家了。。。
- 外行人请问passport_decrypt的加密方式
- php怎么替换前面第一个字符
- 请问php调用外部程序的问题,怎么得到返回值呢?不是屏幕输出啊
- 做过新闻系统的进来
- 数组问题!
- 关于页面计数的问题,
- 求大神纠错,谢谢!!Fatal error: Call to a member function query() on a non-object
- 如何避免在数据库中使用联合操作
- 请大师帮我写个Apache泛域名后2级域名可自动匹配相应的子目录规则
可以用动态的,写伪静态规则。然后通过负载均衡之类,或者添加缓存memcache之类的来解决访问量的问题。