博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[收藏]生成静态页面的方法
阅读量:2456 次
发布时间:2019-05-10

本文共 1140 字,大约阅读时间需要 3 分钟。

具体实现上又有这两种方法

1. 管理后台添加记录时,直接生成目标html页面,并且前台调用连接直接指向生成的html页面。这种方法程优点是程序效率最高。
   服务器负荷轻,不过由于生成的是纯静态页面,一旦页面样式(模版及css=theme)上有所改动就必须重新生成所有的内容页。
   所以实际使用中应用一般不是太多。更多的是使用js,ssi,xml/xsl等客户端手段,生成的静态文件中仅保存数据,不涉及样式,
   这样能达到速度和维护性的平衡,不过相对前后台程序要复杂些
   (应用这种方法时,由于内容为纯静态,可以搭配单独编译的纯静态的apache使用。。效率和资源占用上比包含动态内容支持的要更佳)
   ====
   补充:
    a. 上面说的改动样式,要重新生成所有的内容页,可以通过:
    >>>>在可以在每个生成的页面内嵌入一个<script src=XXX.php?id=xxx&template=red></script>来判断
    是否需要重新生成该页面。
    >>>>apache 的ErrorDocument404 功能, 但是这里前台链接是指向html的,如果该html不存在, 会通过apache的文件不存在重定向到404处理程序的功能重新生成html
       (注:httpd.conf加 ErrorDocument 404 /errprocess.php 指令), 利用这个功能可以解决修改网站样式的时候,要更新所有生成的html文件的问题,
        将整个static文件夹删除即可。
    b. 通过嵌入<script></script>js来调用php的方式,更改许多需要变化的地方(如点击率之类的)

2. 前台访问链接指向php程序,php程序首先检查是否存在相应的静态文件。如果静态文件不存在。则生成并重定向至此文件,否则直接重定向。
   这种方法实际使用中一般和apache的url_rewrite功能一起使用。将php的文件地址重显示为html的形式,有利于搜索引擎的检索。
   这种方法在效率上略有损失,不过程序结构简单,便于调整,在访问量不是很大时使用很合适。。

  
  
 注意事项: 
   所有生成的html文件都集中放到一个文件夹, 其中还应该注意生成文件如果很多的话(如论坛),访问其中一个htm文件,将会变得很慢,
   那么最好通过
   >>>>按日期来分隔文件夹,如static/2004/11/18/0001.htm
   >>>>对帖子id根据数据库中字段长度做str_pad:比方说id为123456,数据库中为int(11),则id处理为00000123456,
       考虑到linux下一般同一下文件到达四位数会有性能影响,对其做切割,最后路径为static/00/000/123/456.html

详细的讨论可以见:

转载地址:http://kejhb.baihongyu.com/

你可能感兴趣的文章
Mercy Health为其主要门户网站设置了Drupal和Alfresco
查看>>
gpl2 gpl3区别_自由软件基金会将举办有关GPL执法和法律道德的研讨会
查看>>
python 下三角矩阵_Python | 矩阵的上三角
查看>>
Java StringBuffer CharSequence subSequence(int spos,int epos)方法与示例
查看>>
JavaScript中带有示例的Math.log2()方法
查看>>
scala中抽象类和特质_Scala中特质与抽象类的区别
查看>>
缓存解决了什么体系结构_计算机体系结构中的缓存一致性问题
查看>>
c语言中判断奇数偶数的函数_创建一个函数来检查Python中的偶数或奇数
查看>>
软件测试银行术语_与软件测试有关的一些重要术语
查看>>
python 示例_Python TextCalendar类别| prmonth()方法与示例
查看>>
Java FileInputStream getChannel()方法与示例
查看>>
Java DataOutputStream writeChar()方法与示例
查看>>
Java ResourceBundle containsKey()方法及示例
查看>>
Java StringBuilder deleteCharAt()方法与示例
查看>>
如何在React Native中使用Picker组件?
查看>>
python中acosh_JavaScript中带有示例的Math.acosh()方法
查看>>
Java LocalDate类| lengthOfMonth()方法与示例
查看>>
Java LocalDate类| withDayOfYear()方法与示例
查看>>
bresenham算法_Bresenham计算机图形学中的线条绘制算法
查看>>
Java ByteArrayOutputStream close()方法与示例
查看>>