美文网首页
网站性能优化 --- 页面静态化

网站性能优化 --- 页面静态化

作者: NameJaho | 来源:发表于2018-07-18 13:27 被阅读0次

一 . 什么是页面静态化

   一般来说,用户访问一个页面,服务器对应的视图模块会从数据库取出数据并且渲染到对应的模板文件中,最后再返回给用户,每个用户都经历这样的一个过程,如果成千上万的用户访问,那服务器的压力显而易见会很大;如果我们把用户访问频繁的页面做成一个静态的页面,然后用户每次访问的这个页面,那么服务器的压力不就大大的减少了?举个例子,一分钟之内,有500个用户访问了首页,首页的数据要从数据库中查2次,则总共需要查询数据库1000次;将页面静态化后,同种情况,只需要在第一个用户访问的时候查询2次数据库然后生成一个静态页面,后续的用户都访问该页面,相比之下,服务器的压力大大的减少了

   页面静态化即将动态渲染生成的页面结果保存成html文件,放到静态文件服务器中。用户访问的时候访问的直接是处理好之后的html静态文件。 对于页面中属于每个用户展示不同数据内容的部分,可以在用户请求完静态化之后的页面后,在页面中向后端发送请求,获取属于用户的特殊的数据

二. 页面静态化的流程

   生成静态的html文件 --> 配置文件中添加保存静态文件的目录 --> 配置模板目录 --> 模板目录中新建index.html模板文件

PS:Django中

  • 生成静态的html文件

    ...
    import os
    from django.conf import settings
    from django.template import loader
    # 将渲染到模板的数据content准备好后
    template = loader.get_template('index.html')
    html_text = template.render(context)
    file_path = os.path.join(settings.GENERATED_STATIC_HTML_FILES_DIR, 'index.html')
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(html_text)
    
  • 配置文件中添加保存静态文件的目录

    GENERATED_STATIC_HTML_FILES_DIR = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'front')
    
  • 配置模板目录

    ...
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    ...
    
  • 模板目录中新建index.html模板文件

三. 静态页面生成之添加定时任务

对于一些数据频繁更新的页面,使用定时任务每隔一段时间重新生成页面

  1. 安装 pip install django-crontab

  2. 添加应用

    INSTALLED_APPS = [
    ...
    'django_crontab',  # 定时任务
     ...
     ]
    
  3. 设置任务的定时时间

  4. 在配置文件中设置定时执行的时间

  5. 每个定时任务分为三部分定义:

    • 任务时间
      基本格式 :

      * * * * *
      
      分 时 日 月 周      命令
      
      M: 分钟(0-59)。每分钟用*或者 */1表示
      
      H:小时(0-23)。(0表示0点)
      
      D:天(1-31)。
      
      m: 月(1-12)。
      
      d: 一星期内的天(0~6,0为星期天)。
      
    • 任务方法

    • 任务日志

  6. 首页的定时任务设置如下

    # 定时任务
    CRONJOBS = [
        # 每5分钟执行一次生成主页静态文件
        ('*/5 * * * *', 'contents.crons.generate_static_index_html', '>> /Users/Jaho/Desktop/jaho/logs/crontab.log')
    ]
    
  7. 解决crontab中文问题
    CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

  8. 开启定时任务
    python manage.py crontab add

  9. 显示已经激活的定时任务
    python manage.py crontab show

  10. 移除定时任务
    python manage.py crontab remove

  11. 静态化首页的手动脚本

    #!/usr/bin/env python
    
    """
    功能:手动生成所有SKU的静态detail html文件
    使用方法:
        ./regenerate_index_html.py
    """
    import sys
    sys.path.insert(0, '../')
    
    import os
    if not os.getenv('DJANGO_SETTINGS_MODULE'):
        os.environ['DJANGO_SETTINGS_MODULE'] = 'meiduo_mall.settings.dev'
    
     # 让django进行初始化设置
    import django
    django.setup()
    
    
    导入静态页面的方法
    
    if __name__ == '__main__':
        # 生成静态页面的方法
    

四. 静态页面生成之异步队列

对于一些数据更新不是很频繁的页面,当管理员修改页面对应数据表的数据时重新生成页面

  • 可以将生成页面的函数放置于Celery任务队列 ,然后在管理员修改页面的视图中发送任务即可

好处

  1. 提高了访问的速度,不需要去访问数据库,或者缓存来获取哪些数据,浏览器直接加载渲染html页即可。所以可以大大的提高访问效率;
  2. 从网站优化来分析,搜索引擎更喜欢静态的网页,静态网页与动态网页相比,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO排名更容易提高。
  3. 从安全角度讲,静态网页不宜遭到黑客攻击,如果黑客不知道你网站的后台、网站采用程序、数据库的地址,静态网页, 更不容易受到黑客的攻击。
  4. 从网站稳定性来讲,如果程序、数据库出了问题,会直接影响网站的访问,而静态网页就避免了如此情况,不会因为程序等,而损失网站数据,影响正常打开,损失用户体验,影响网站信任度。

缺点

静态页面多的时候会占用空间

Summary

虽然页面增多会占用更多的服务器空间,但是以空间换时间,提高网站的访问速度,提升用户的体验,还是非常的值得的,毕竟空间这东西,有钱就可以解决了

如若有误,欢迎指出,感谢!

相关文章

  • django页面静态化和缓存小结

    写在前面 基础的学了页面静态化和缓存,这篇文章来总结一下。 页面静态化和页面数据缓存 对网站本身性能的优化,减少数...

  • 网站性能优化 --- 页面静态化

    一 . 什么是页面静态化 一般来说,用户访问一个页面,服务器对应的视图模块会从数据库取出数据并且渲染到对应的模板...

  • Web前端性能优化进阶——完结篇

    前言 在之前的文章 如何优化网站性能,提高页面加载速度 中,我们简单介绍了网站性能优化的重要性以及几种网站性能优化...

  • web页面性能优化以及SEO

    web页面性能优化能够提高页面加载速度,提升用户体验度,基于三秒法则,每个网站都极力优化页面性能。 SEO(Sea...

  • pc端的性能优化

    pc端性能优化 一、页面优化的常用工具 网站慢的因素很多 二、网站优化 1、页面优化 2、服务器端优化 3、主观优...

  • 听欢哥讲PHP页面静态化

    页面静态化 1、什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在用户面前。 ...

  • 大数据并发处理解决方案:

    1、HTML静态化 效率最高、消耗最小的就是纯静态化的html页面,所以尽可能使网站上的页面采用静态页面来实现,这...

  • 大型网站技术架构-瞬时响应高性能架构-网站性能测试

    1、不同视角下的网站性能 1)用户视角的网站性能: 使用前端架构优化手段:优化页面HTML样式、利用浏览器端的并发...

  • 前端性能优化的三个维度

    前端性能优化可以分为三个level:静态资源优化、接口访问优化、页面渲染速度优化,在操控门槛上依次递增,优化效果上...

  • 前端性能优化笔记

    一、性能优化的原则 多使用内存、缓存 减少CPU计算、减少网络请求 二、 性能优化入手点2.1 页面和静态资源的加...

网友评论

      本文标题:网站性能优化 --- 页面静态化

      本文链接:https://www.haomeiwen.com/subject/yzfopftx.html