CSS与JS性能问题初步解决方案

开发 前端
引入过多CSS和JS容易引起页面加载缓慢。JS性能问题一直是网页速度的瓶颈,本文提供了一个初步解决方案。

在开发过程中,有时遇到由于缓存问题导致页面不能及时更新,有时页面引入了不必需的样式脚本文件,有时由于文件太多,字节过大导致页面的性能缓慢,为了解决这些问题,个人为JS性能问题设想了一个初步的解决方案。

JS性能问题解决方案如下:

 

描述

备注

资源级别

    页面的资源级别:

  1. 全局级(Common
  2. 模块级(Module
  3. 页面级(Page

 

优化方案

    优化主要从以下几个方面:

  1. 减少单个文件的字节大小
  2. 减少文件的个数(即减少http请求数)

     

其他的优化是从开发技巧上进行的,取决于专业水平

    文件输出方案

  1. 合并
  2. 压缩

    基于资源级别及优化方案,制定以下4种方案:

    1、直接引用单个文件依次引入(<link/><script/>

    2、基于1,进行单个文件压缩

    3、按照资源级别合并成新的单个文件

    4、基于3,进行合并后的文件压缩



     

思考点

方案3 如何确定合并的文件个数?


缓存问题

采用时间戳后缀

 

f2econfig_json

配置文件:

var f2eJson={
            
"Version":"v3",//版本

"Update":"20091015",//根据时间戳更新缓存

"Compress":"1",//文件输出方案(1234

"Common":[//全站公共样式

  "common/global.css"

],

"Module":{ //模块及样式

       "模块1":["product,.css"]

},

"Page":{//每个页面所拥有的样式

       "index.php":["","sys/index.css"],

         //第一个元素存储模块引用名称,无则留空

       "search.php":["模块1","product/search.css"]

       //引用多个模块,用 “,”隔开,比如:   模块1,模块2

 }

}

  1. php有专门的json转换库
  2. js的配置结构同css的配置json

f2engine.php

   1、读取json配置文件,转化成php数组
   2、根据每个页面的资源参数,查找该页面拥有的样式资源
   3、根据文件输出方案,进行处理
   4、在页面上输出
  1. 配置文件没有更新的情况下,只解析一次json为数组
  2. 只解析一次资源,并将结果保存,供下次直接使用

     

JS性能问题解决的例子

    比如search.php这个页面的样式引用

     

  1. 根据页面找到页面级资源: Page["search.php"]
  2. 根据该数组的第一个值查找所引用的模块样式
  3. 根据配置文件中的“Compress”值确定文件输出方案,并进行处理
  4. 在页面上进行输出

    //全站样式 common

    <link type="text/css" href="common/global.pack.css?20091015" rel="stylesheet" />

    //模块样式 module

    <link type="text/css" href="product.pack.css?20091015" rel="stylesheet" />

    //页面样式 page

    <link type="text/css" href="product/serach.pack.css?20091015" rel="stylesheet" />

     

    :压缩后文件名称变为   search.pack.css

     

 

【编辑推荐】

  1. 通过CSS实现文字旋转
  2. 高手总结CSS书写技巧
  3. CSS 3中的炫目新功能抢先预览
  4. CSS 3备受期待的8大功能
  5. CSS网页布局困扰新手的八个问题
责任编辑:yangsai 来源: 博客园
相关推荐

2020-10-23 06:40:31

Node.js前端开发

2010-08-31 16:09:04

DIV+CSS

2010-08-26 14:00:28

CSSmargin

2022-04-07 07:31:30

CSSCSS Reset前端

2010-09-09 15:44:21

IEFFCSS

2020-09-09 10:00:41

JavaScript前端瓶颈

2017-02-15 09:40:38

JavaScript分析解决

2010-09-07 09:08:03

DIV弹出层

2010-08-26 12:59:29

marginCSS

2010-08-26 10:56:16

CSStextarea

2010-10-09 12:58:59

JS脚本兼容

2010-09-09 16:47:49

CSS paddingFirefox

2010-08-23 14:06:57

DIV+CSS

2010-09-07 13:24:18

CSS

2010-09-02 15:18:42

CSSASP.NET

2022-04-19 06:27:13

CSS数学函数calc

2013-04-02 09:25:20

PaaS 应用可移植性PaaS提供商平台即服务

2020-03-23 14:35:28

前端架构应用程序

2023-09-11 07:11:04

CSSNesting

2010-09-01 14:51:12

CSSIEFirefox
点赞
收藏

51CTO技术栈公众号