zoukankan      html  css  js  c++  java
  • 网站优化—页面静态化技术

    数据库检索的问题

    主要是为了减少数据库的操作,让MySQL能够提供更强大的服务

     

    1. 使用缓存技术
      1. 磁盘缓存:就是将用户请求数据库的数据,保存到磁盘文件形成一个静态的HTML文本,下次用户的访问的时候,直接返回该HTML文本。
      2. 内存缓存:将MySQL的数据取出之后,保存到内存(memcache,不算一个NOSQL数据库,但是是一个缓存系统)之中,下次直接从内存中返回。(效率非常高)

      注意:只要不使用sql语句作为查询条件的数据库(仓库)就叫做NOSQL数据库

    2. 优化MySQL
      1. 设计:存储引擎的选择,字段类型
      2. 自身:索引 和 自身的缓存
      3. 架构:读写分离技术
      4. 经验:分析小案例

      页面静态化技术

      将动态请求的数据保存为静态的HTML文本,供访问用户下次直接返回。

       

      静态化技术分类:

      形式上:

    3. 真静态:将数据真正的缓存为静态的HTML文本,在效率上有很大的优势。
    4. 伪静态:是将动态的URL地址转换为静态的URL地址(.html),主要是为了SEO(搜索引擎对收录静态的网站非常的友好),还有一个好处就是放sql注入。只是在形式上更加的利于SEO。

       

      范围上分类:

    5. 全站静态化:将所有的数据全部保存为静态的HTML文本。
    6. 局部动态:如果全站静态化之后,无法解决登录的问题(更改用户名登录),一般都是使用ajax来完成。

       

      简单对比测试:

      动态访问:

      静态的访问:

      通过对比:发现静态的请求明显要优于动态的请求。所有完成有必要进行页面静态化技术。

       

       

      使用的技术

      完成页面静态化技术主要使用php提供的ob缓存来实现这个技术。ob(output_buffering)定义为输出缓存(缓冲),这缓存可以把php处理的数据放到里面,然后我们可以将里面的数据获取,然后保存为静态的文本。

       

      缓存相关的信息

    7. 浏览器缓存:就是将数据发送到浏览器之后,浏览器并不会之后的显示出来,一般需要缓存到一定的大小之后,才将数据在浏览器上显示出来。(一般浏览器的缓存大小为)
    8. 程序缓存 :也是php提供的,本身是开启的,程序员无法对其关闭操作。主要用于缓存响应的头信息响应的主体的信息

      响应头:主要是给浏览器查看的

      响应主体:主要是给用户查看的,为html标签的内容

       

       

    9. ob缓存:这个是php提供的,本身是关闭的,程序员可以手动的操作。

      当ob缓存开启之后,这个时候php脚本执行后的数据就会先保存到ob缓存里面,当php脚本执行完毕之后,就会把ob缓存里面的内容移动到程序缓存里面。然后程序缓存将数据返回给Apache服务器,Apache服务器将数据返回给浏览器缓存,当浏览器的缓存大小达到一定数量的时候,浏览器就会显示出数据。

      当ob缓存没有开启的时候,这个时候php脚本处理的数据就直接移动到程序缓存里面,然后返回Apache,Apache返回给浏览器的缓存,达到一定的大小就显示出来。

       

      解释:浏览器不会立马显示数据,填充一定数据大小之后,才显示服务器返回的数据。

      主要是浏览器在显示数据的时候,渲染数据是要耗费系统资源的。

       

      ob缓存相关的函数

      ob_start(): 代表开启ob缓存

      ob_get_contents():获取ob缓存里面的内容

       

      问题1:在响应头输出之前是不能有信息输出的。

      效果:

      注意:当开启ob缓存之后,为什么不会出现waring级别的提示?

      主要是由于ob缓存开启,先将数据保存到ob缓存里面,将响应头信息保存到程序缓存

      效果:

      图示解释:

       

       

      ob_get_contents()函数

      效果:

      注意:这个时候就可以使用ob_get_contents()函数将ob缓存的内容获取,然后使用file_put_contents()将内容保存为静态的HTML文本。当用户下次访问的时候直接检查这个静态文本是否存在,存在即返回。

       

      ob_clean()函数,用来清空ob缓存里面的内容,但是不关闭ob缓存

      ob_end_clean()函数,用来清空ob缓存里面的内容,关闭ob缓存

       

      ob_clean()函数

      效果:

       

      ob_end_clean()

      效果:

      解释:当使用该函数后,ob缓存会先清空然后在关闭

       

       

      ob_flush() 将ob缓存的内容先移动到程序缓存,不关闭ob缓存

      ob_end_flush() 将ob缓存的内容先移动到程序缓存,关闭ob缓存

       

       

      ob_flush()

      效果:

       

      ob_end_flush()

      效果:

       

      重要的函数为:ob_start() 和 ob_get_contents() 函数 file_put_contents() 和 file_exist()

       

      ab压力测试工具

      定义

      Apache提供的一个压力检测工具(Apache benchmark),可以来判定一个网站抗压能力,同时还可以获取到网站响应的大小和时间等其他信息。

       

      使用

      在命令行下将ab.exe命令放入使用 -n 并发数 -c 总的请求数

      C:Documents and SettingsAdministrator>D:wampapacheinab.exe -c 100 -n 3000

      http://local.order.com/dynamic.php

       

      注意:

    10. 完成这次请求的时间和多少用户可以在最短的时间见到页面

      动态页面:

      静态页面:

      1370 法则: 1s钟内打开的页面,如果在3s后打开,平均会损失70%的用户。

      通过Apache压力测试工具可以分析网站的一个性能问题。

  • 相关阅读:
    重定向 重写
    php 安装 event 和 libevent 扩展
    curl 和 tcpdump
    yum 升级php版本
    shell 教程
    shell脚本 inotify + rsync 同步脚本
    nodesj中 中间件express-session的理解
    node.js中express-session配置项详解
    我对面向对象的理解
    BootstrapValidator
  • 原文地址:https://www.cnblogs.com/nyxd/p/5369842.html
Copyright © 2011-2022 走看看