开采沉陷学是一个交叉学科,计算机技术在其中发挥了重要作用。为了让资料处理自动化,数据可视化,不少研究人员开发了开采沉陷预计系统。通过对比和测试发现本系统(Mining Subsidence Calculation System,简称MSCS,由蔡来良博士开发)具有以下几点优势:

(1)采用最新的软件开发平台开发,系统兼容性好,经过测试,本软件能支持目前所有的WINDOWS操作系统。

(2)软件整合度高,功能集成度高,只需要使用本软件即可完成数据运算,工程图生成等功能,不需要借助别的平台来后处理预计数据。

(3)软件运算速度高。结合目前的计算机多核CPU硬件技术的发展,本软件的预计计算采用了并行算法,极大地利用了计算机资源,提高了计算速度。

(4)数据可视化程度高。本系统结合开采沉陷预计理论和等高线的自动生成原理,以及计算机图形学技术,集成了地表变形等值线的自动生成功能。本系统输出的等值线格式支持目前所有版本的CAD软件和GIS软件,极大地方便了预计结果在多个学科中的运用,并且预计和出图一体化,使用方便。同时考虑到面积统计的工作量较大,利用地籍测量学中的解析法求面积原理,逐一自动统计出不同变形指标下的土地破坏面积,提高了统计分析工作效率。本系统还开发了下沉盆地的三维可视化功能,界面友好,数据可分析程度高。

(5)集成了土地破坏分区功能,目前国内的其他软件的土地剖坏分区都是在预计结果的基础上,结合CAD软件手动分区。本系统结合地表变形场的基本规律,开发了自动分区功能,为用户节约了大量时间,并提高了分析精度。

(6)数据兼容性好,本软件能处理任意多变形(凸多边形,凹多边形)的开采区域的地表变形预计,任意煤层倾角影响下的开采沉陷预计,以及山区地表移动预计,功能强大,适用范围广。

结合作者多年来对开采沉陷预计的研究和国内外预计技术的发展,本软件必将继续完善,更好地为矿区服务。

mscs造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
寒冷地区水泥路面沉陷(坑槽)快速补料 查看价格 查看价格

GLP

t 13% 哈尔滨华通道桥技术开发有限责任公司
开采青石板 300*100*30 查看价格 查看价格

m2 13% 成都市金牛区祖强石材经营部
上下塌开关 UKS 查看价格 查看价格

13% 重庆中正电梯配件有限责任公司
63075种类:陶瓷地砖;规格参数:300×600mm; 查看价格 查看价格

宏珠

13% 陕西宏珠商贸有限公司
红砂石开采 300*300*150厚 查看价格 查看价格

m3 13% 成都市金牛区祖强石材经营部
香苗/香树苗 白木香.奇楠,高度80cm,地径0.8cm 查看价格 查看价格

13% 广西灵山武利联兴果苗场
米径:1 高度:150 冠幅:50 地径:1 查看价格 查看价格

13% 广州雅境园林绿化有限公司
地径:55-56cm 树型优美 无病虫害 查看价格 查看价格

13% 广东省石桥春丰园林珍贵树种植基地
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
暂无数据
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
手工开采自然层石板 300×600×40mm|1m² 1 查看价格 成都市金牛区富兴石材成都第二公司 四川  绵阳市 2012-07-03
开采面青石板汀步 1200X600/1500X500X15厚X15厚|86.52m² 3 查看价格 广州市信磊石材装饰工程有限公司 江西  南昌市 2021-05-24
青石板自然开采 600×600×30|228m² 1 查看价格 浙江常山县宏宇石材有限公司 浙江  舟山市 2021-07-27
100-120mm厚石板游步(原石开采面) 300×900mm和300×550mm|222m² 1 查看价格 佛山市大卫雕塑有限公司 广东  惠州市 2017-02-20
开采面芝麻黑花岗岩 150x150x50mm|1m² 1 查看价格 成都嘉利成功石材加工厂 四川  成都市 2017-12-29
深灰麻花岗岩开采 150厚|1m² 3 查看价格 莱州市夏邱镇宏峰石材厂    2014-10-27
120吨地磅 3m×18mSCS型吨电子汽车衡,顶尖U型钢结构秤台,12mm厚面板|1台 1 查看价格 广东小蚁智能称重设备有限公司 广东   2021-11-05
花岗岩条石 1.品种规格:矩形石阵:(L×50×50芝麻灰火烧面花岗岩),按垂直延长米计量2.技术要求:均应达到GB/T18601-2009《天然花岗岩建筑板材》中优等品的要求及规定3.采购要求:荒料定尺开采|211.2m 3 查看价格 长泰县建伟石制品有限公司 福建   2019-06-26

简介

​在任何情况下,仅仅交付一个具有丰富功能集的高质量应用程序是不够的,在越来越多的时候,它还必须满足高可用性标准。您是否因为群集技术看起来过于高深、难于理解和使用而没有使应用程序再提高一个层次? 随着 Microsoft 的群集服务在 Windows NT™ 4 中引入以及在 Windows Server 2003 系列中正式提供,开发人员可使用一些简单工具在群集环境中部署应用程序。这些工具能够将群集中的应用程序登记为一般应用程序,并且能够通过编写 Windows 脚本的方式来控制应用程序的配置。

群集将两个或多个服务器连接在一起,使其对客户端呈现为单个计算机。在一个群集中连接服务器可以分担工作负载、实现单点操作/管理,并为满足增长的需求进行相应的调整提供了一种途径。因此,通过群集可以产生具有高可用性的应用程序。

本文着重介绍三种支持群集的 Microsoft 服务器技术之一:群集服务。我们将说明如何在群集环境中对应用程序轻松执行性能检查,而无需更改应用程序代码。

三种群集技术

Microsoft 服务器提供了三种支持群集的技术: 网络负载平衡 (NLB)、组件负载平衡 (CLB) 和 Microsoft 群集服务 (MSCS)。

网络负载平衡

网络负载平衡充当前端群集,用于在整个服务器群集中分配传入的 IP 流量,是为电子商务 Web 站点实现增量可伸缩性和出色可用性的理想选择。 最多可以将 32 个运行 Windows Server 2003 系列产品的计算机连接在一起共享一个虚拟 IP 地址。NLB 通过在群集内的多个服务器之间分配其客户端请求来增强可伸缩性。随着流量的增加,可以向群集添加更多的服务器,任何一个群集最多可容纳 32 个服务器。NLB 在为用户提供连续服务的同时还提供了高可用性,即自动检测服务器故障,并在 10 秒内在其余服务器中重新分配客户端流量。

组件负载平衡

组件负载平衡可以在多个运行站点业务逻辑的服务器之间分配负载。它在最多包含八个等同服务器的服务器群集中实现了 COM+ 组件的动态平衡。在 CLB 中,COM+ 组件位于单独的 COM+ 群集中的服务器上。激活 COM+ 组件的调用是平衡到 COM+ 群集中的不同服务器的负载。CLB 通过作用于多层群集网络的中间层与 NLB 和群集服务配合工作。 CLB 是作为 Application Center 2000 的特性提供的,可与 Microsoft 群集服务在同一组计算机上运行。

群集服务

群集服务充当后端群集,可为数据库、消息传递以及文件和打印服务等应用程序提供高可用性。当任一节点(群集中的服务器)发生故障或脱机时,MSCS 将尝试最大程度地减少故障对系统的影响。

通过Microsoft群集服务实现故障转移

MSCS 故障转移功能是通过群集中连接的多个计算机中的冗余实现的,每台计算机都具有独立的故障状态。为了实现冗余,需要在群集中的多个服务器上安装应用程序。但在任一时刻,应用程序只在一个节点上处于联机状态。当该应用程序出现故障或该服务器停机时,此应用程序将在另一个节点上重新启动。 Windows Server 2003 数据中心版支持在一个群集中最多包含 8 个节点。

每个节点都具有自己的内存、系统磁盘、操作系统和群集资源的子集。如果某一节点出现故障,另一个节点将接管故障节点的资源(此过程称为"故障转移")。然后,Microsoft 群集服务将在新节点上注册资源的网络地址,以便将客户端流量路由至当前拥有该资源的可用系统。当故障资源恢复联机状态时,MSCS 可配置为适当地重新分配资源和客户端请求(此过程称为"故障恢复")。要使应用程序恢复到发生故障转移时的那一点,节点必须能够访问保持应用程序状态的共享存储区。

请注意,Microsoft 群集服务旨在提供高可用性,而不是真正的容错功能。"容错"一词通常用于描述提供更高级别恢复功能的技术。容错服务器通常使用结合了特定软件的高级硬件或数据冗余,提供从单个硬件或软件故障近乎瞬时的恢复。这类解决方案的成本远远高于群集解决方案,因为您必须购买冗余硬件,而冗余硬件只不过闲置在那里用于故障恢复。Microsoft 群集服务使用价格适宜的标准硬件提供出色的高可用性解决方案,同时最大程度地利用计算资源。

Microsoft 群集服务基于无共享的群集模型。无共享模型规定,虽然群集中有多个节点可以访问设备或资源,但该资源在一个时刻只能由一个系统占有和管理。(在 MSCS 群集中,资源是指任何可以联机或脱机、可在群集中进行管理、一个时刻只能以一个节点作为宿主并可以在节点之间移动的物理组件或逻辑组件。

群集服务结构

Microsoft 群集服务由三个主要组件构成:群集服务、资源监视器和资源 DLL。此外,还可以利用群集管理器创建提供管理功能的扩展 DLL。

群集服务

群集服务是核心组件,并作为高优先级的系统服务运行。群集服务控制群集活动并执行如下任务:协调事件通知、加速群集组件之间的通信、处理故障转移操作和管理配置。 每个群集节点都运行自己的群集服务。

资源监视器

资源监视器是群集服务和群集资源之间的接口,并作为独立进程运行。群集服务使用资源监视器与资源 DLL 进行通信。DLL 处理所有与资源的通信,因此 DLL 以资源监视器为宿主可以保护群集服务免受运行不正常或停止工作的资源造成的影响。资源监视器的多个副本可以在单个节点上运行,从而可以将无法预测的资源与其他资源隔离开。

群集服务在需要对资源执行操作时,向分配给该资源的资源监视器发送请求。如果资源监视器的进程中没有可以处理该类型资源的 DLL,则使用注册信息加载与该资源类型相关联的 DLL。然后,将群集服务的请求传递至其中一个 DLL 的入口点函数。资源 DLL 将处理操作的细节,以满足资源的特定需要。

资源 DLL

第三个关键的 Microsoft 群集服务组件是资源 DLL。资源监视器和资源 DLL 使用资源 API 进行通信。资源 API 是用于管理资源的入口点、回调函数和相关结构及宏的集合。

对于群集服务而言,资源是任何可进行管理的物理组件或逻辑组件,例如磁盘、网络名、IP 地址、数据库、Web 站点、应用程序以及任何其他可以联机和脱机的实体。资源可按类型进行组织。资源类型包括物理硬件(例如磁盘驱动器)和逻辑项(例如 IP 地址、文件共享和一般应用程序)。

每个资源都使用资源 DLL,它主要是资源监视器和资源之间的被动转换层。资源监视器调用资源 DLL 的入口点函数来查看资源的状态,使资源联机和脱机。资源 DLL 负责通过任何方便的 IPC 机制与其资源进行通信,以实现这些方法。

实现其自身资源 DLL 与群集服务通信的应用程序以及使用群集 API 请求和更新群集信息的应用程序都被定义为识别群集的应用程序。不使用群集或资源 API 以及群集控制代码函数的应用程序和服务都不识别群集,也不知道群集服务在运行。这些不识别群集的应用程序通常作为一般应用程序或服务进行管理。

识别群集的应用程序和不识别群集的应用程序都可以在群集节点上运行,并且都可以作为群集资源进行管理。但是,只有识别群集的应用程序可以利用群集服务通过群集 API 提供的功能。开发识别群集的应用程序需要建立自定义资源类型。通过自定义资源类型,开发人员可以使其应用程序在群集内发生各种事件(例如,节点即将脱机,因此会关闭数据库连接)时,作出响应并采取必要的措施。

对于大多数需要在群集中运行的应用程序,最好投入一些时间和资源开发自定义资源类型。不过,可以先在群集环境中对应用程序进行测试,而不必修改应用程序的代码或创建新的资源类型。在 Windows Server 2003 系列中,未经修改的应用程序可以作为"不识别群集的"应用程序以基本级别运行。群集服务专为此用途提供了一般应用程序资源类型。

群集管理器扩展 DLL

群集管理器扩展 DLL 在群集管理器内提供特定于应用程序的管理功能,允许用户以同样的方式管理他们的应用程序,无论该应用程序是在群集内部运行还是在群集外部运行。开发人员可以在群集管理器的框架内提供应用程序管理功能,或只是将这些功能链接到现有的管理工具。

开发人员可以通过编写扩展 DLL 来扩展群集管理器的功能。群集管理器应用程序通过一组已定义的 COM 接口与扩展 DLL 进行通信。扩展 DLL 必须实现一组特定的接口并且在群集的每个节点上都进行注册。

不识别群集的应用程序

不提供其自身资源 DLL 的应用程序或服务仍可以在群集环境中进行配置。Windows Server 2003 系列中的群集服务包括仅用于此目的的一般资源 DLL:一般应用程序资源 DLL 和一般服务资源 DLL。群集服务将这些应用程序或服务看作是不识别群集的一般应用程序或服务。

一般资源 DLL 只提供最基本的控制。例如,一般应用程序资源 DLL 通过确定应用程序的进程是否仍然存在来检查应用程序是否发生故障,并通过终止进程使应用程序脱机。但它并不依赖于其他资源,而是提供一个在群集环境中测试应用程序的简单方法。

高可用性记事本

并非所有应用程序都能在群集中高效地工作。最有效的评估方式就是在群集中实际部署应用程序。执行初次测试的最简单机制是使用内置的一般应用程序资源类型将应用程序登记到群集中。"Generic Application"(一般应用程序)资源类型作为 Windows Server 2003 系列中群集服务的一部分提供,可以通过查看 "Cluster Administrator"(群集管理器)工具中 "Cluster Configuration"(群集配置)下的 "Resource Types"(资源类型)节点查看该类型以及其他内置资源类型。

群集管理器具有交互式向导,使您能够为列出的任何资源类型创建资源。群集服务还提供了 COM 接口,您可以用编程的方式创建和管理资源。

注最新的群集管理器工具及相关的开发资源可以从 Platform SDK 获得。

群集自动化服务器

群集自动化服务器提供一组自动化对象,用于向脚本语言公开一个完整的群集管理接口,使您能够开发基于 Web 的远程管理工具。群集自动化服务器能够简化和增强创建群集管理应用程序的过程。

群集自动化服务器的本质是面向对象的,这意味着几乎所有群集编程任务都会涉及以下步骤:

确定需要执行的群集操作。

查找具有属性或方法的群集自动化服务器对象以完成操作。

确定如何获取步骤 2 中的对象。MSDN® 中提供的对象层次结构可用于此目的。

获取对象并调用属性或方法。

为了进行说明,我们将使用 Windows Scripting Host 和 Microsoft VBScript 以编程方式创建一般应用程序资源。

群集对象

群集对象是顶层对象,允许创建新实例。群集对象的 ProgID 是 "MSCLUSTER.CLUSTER":

Set oCluster = CreateObject( "MSCluster.Cluster" ) 打开群集

在使用群集上的任何方法之前,必须先打开到该群集的连接。Open 方法可打开到群集的连接。将空字符串 ("") 作为参数传递给 Open 方法,即可打开到 localhost 上的群集的连接。脚本将在本地主机服务器上运行:

oCluster.Open( "" ) 创建组

群集组是群集资源的容器。当组中的一个资源发生故障且必须将该资源转移到其他节点时,该组中的所有资源都将被移动。组还定义了依赖关系边界。某个资源只能建立与另一个资源的依赖关系,前提是,该资源在同一个组中。为了进行测试,我们将创建一个独特的组,名为 "High Availability Notepad"(高可用性记事本):

Set oGroup = oCluster.ResourceGroups.CreateItem( "High Availability Notepad" ) 创建资源

每个组都包含资源集合。CreateItem 方法创建一个新资源,并将其添加到组的集合中。在本示例中,我们将创建一个名为 "Notepad" 的资源,资源类型为 "Generic Application":

Set oResource = oGroupResources.CreateItem( "Notepad", "Generic Application", 0 ) 设置资源属性

每个一般应用程序资源都具有两个可使资源联机的基本属性: CommandLine 和 CurrentDirectory。CommandLine 包含资源联机时要执行的命令,而 CurrentDirectory 则指定从中执行命令的文件系统目录。当此脚本执行语句使资源联机时,将启动 Notepad。要查看 Notepad,我们还需要将 InteractWithDesktop 属性设置为 1。

Set oProperties = oResource.PrivateProperties ' Set the properties of the Generic Application oProperties.Item("CommandLine") = "notepad" oProperties.Item("CurrentDirectory") = "c:\" oProperties.Item("InteractWithDesktop") = 1 oProperties.SaveChanges 使资源联机

Online 方法使资源联机。Online 是一种状态,用于描述资源对群集可用。对于一般应用程序,使资源联机就意味着启动 Notepad。

oResource.Online 10 完整的脚本清单

Option Explicit Main '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Main subroutine. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Main Dim oGroup Dim oCluster Dim oResource ' Create the Cluster object. Set oCluster = CreateObject( "MSCluster.Cluster" ) ' Open the cluster. Empty string means open the local cluster. oCluster.Open( "" ) ' Create or open the group. AddGroup oCluster, oGroup ' Create or open the resource. AddResource oGroup, oResource ' Bring the resource online and wait for up to 10 seconds ' for it to come online. oResource.Online 10 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' This subroutine will create or open the group. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub AddGroup( oCluster, oGroup ) Set oGroup = oCluster.ResourceGroups.CreateItem( "High Availability Notepad" ) End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' This subroutine will add the resource to the group. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub AddResource( oGroup, oResource ) Dim oGroupResources Dim oProperties Dim oCLProperty Dim oCDPropery Set oGroupResources = oGroup.Resources Set oResource = oGroupResources.CreateItem( "Notepad", "Generic Application", 0 ) 'CLUSTER_RESOURCE_DEFAULT_MONITOR Set oProperties = oResource.PrivateProperties ' Set the properties of the Generic Application oProperties.Item("CommandLine") = "notepad" oProperties.Item("CurrentDirectory") = "c:\" oProperties.Item("InteractWithDesktop") = 1 oProperties.SaveChanges End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Wait for a specified number of time. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Sleep( PauseTime ) Dim Start Start = Timer Do While Timer < Start + PauseTime Loop End Sub 通过运行这个简单的脚本,将创建新的 "Notepad" 资源,并将其放入自身的组("High Availability Notepad")中。

验证结果

我们可以使用群集管理器来验证结果。通过查看"群集管理器"中 Notepad 资源的属性,可以看到已经正确设置了参数。

查看 "Advanced"(高级)选项卡,您将看到默认属性,指示发生故障时应用程序至多重新启动 3 次。LooksAlive 和 IsAlive 轮询间隔默认为资源类型中的值,但也可以通过指定其他值将其改写。由于此应用程序没有特殊代码使其成为识别群集的应用程序,因此仅通过在系统中运行的进程存在与否确定它是否处于活动状态。

测试应用程序

Notepad 资源联机后将在服务器上启动。如果 Notepad 进程被终止,它将立即再次启动。这是因为群集服务在发挥作用,试图使应用程序保持打开和运行状态。作为一般应用程序资源,无论什么时候,只要应用程序进程不再运行,群集服务就能够立即注意到,并根据策略采取纠正措施。

如果应用程序发生的故障不会导致进程终止(例如,网络故障、挂起或后台线程终止),结果会怎样呢?遗憾的是,对于一般应用程序资源类型,您只能进行一般故障检测。大多数编写在群集环境中运行的应用程序的开发人员都倾向于生成自定义资源 DLL,来处理与应用程序有关的问题。要不是作为在群集中评估应用程序的快捷方法,一般应用程序资源类型不会得到应用。

结论

Microsoft 群集服务使用价格适宜的标准硬件提供高可用性,同时最大程度地利用计算资源。Windows Server 2003 系列中的群集服务提供了强大的工具,使您的应用程序具有较高的可用性。对于某些开发人员而言,编写识别群集的应用程序可能要付出很大的代价,且难度较大。为了使开发人员能够以较低的投入来使用集群,群集服务提供了一般应用程序资源类型,允许在群集内对应用程序进行简单配置。虽然一般应用程序资源类型可能不会提供生产型应用程序所需的复杂性,但它提供了一种测试方法,可以查看应用程序在群集内的执行情况。

mscs开采沉陷常见问题

  • csc

    变形缝子目有楼地面变形缝、顶棚变形缝、屋面变形缝,这都是水平的。还有内墙面变形缝、外墙面变形缝,这是垂直的。

  • 矿石的开采

    应特别注意开采矿石需办理正规手续。矿石是指从经过矿山中采下来含有某种有价值的矿物质的石块,矿石经过破碎、粉磨等逐级加工后可以应用在金属矿山、冶金工业、化学工业、建筑工业、铁(公)路施工单位、水泥工业及...

  • scsi设备是什么?

    你好,SCSI设备就是使用SCSI技术的设备    该技术主要被用作硬盘借口,光驱也有SCSI的    支持SCSI设备的主板上面有SCSI控制器,就是SC...

mscs开采沉陷文献

采动区地震—开采沉陷变形对建筑耦合作用 采动区地震—开采沉陷变形对建筑耦合作用

格式:pdf

大小:881KB

页数: 3页

评分: 4.6

针对中国目前缺乏完善的采动区建筑结构抗震抗变形双重保护的分析方法和专门的采动区结构抗震抗变形规范的现状,在分析采动区建筑结构抗采动变形研究以及设计方法的基础上,通过有限元软件的数值模拟分析,提出较为合理的地震动和开采沉陷变形分析模型,建立完全随机地震反应和沉陷变形的整体有限元法,确定了合理的采动区建筑结构抗震抗变形构造措施,对采动区已有建筑的抗震抗变形加固维修以及采动区建筑物抗开采沉陷变形设计和抗震设计有一定的参考价值和指导意义。

立即下载
煤矿开采沉陷区地表与建筑物变形探讨 煤矿开采沉陷区地表与建筑物变形探讨

格式:pdf

大小:881KB

页数: 2页

评分: 4.3

在分析采空区上部岩体结构破坏特征、地表移动变形及其对上部建筑物影响的基础上,提出了有效吸收抵抗采空沉陷区地表不均匀沉降及建筑物结构抗变形的设计思路,简要阐述了采空区建筑物地基与基础协同工作,并且对上部结构的构造措施提出相关建议。

立即下载

性能优化

慎重选择高消耗的样式

高消耗属性在绘制前需要浏览器进行大量计算:

box-shadowsborder-radiustransparencytransformsCSS filters(性能杀手)

避免过分重排

当发生重排的时候,浏览器需要重新计算布局位置与大小,更多详情。

常见的重排元素:

widthheightpaddingmargindisplayborder-widthpositiontopleftrightbottomfont-sizefloattext-alignoverflow-yfont-weightoverflowfont-familyline-heightvertical-alignclearwhite-spacemin-height

正确使用 Display 的属性

Display 属性会影响页面的渲染,请合理使用。

display: inline后不应该再使用 width、height、margin、padding 以及 float;display: inline-block 后不应该再使用 float;display: block 后不应该再使用 vertical-align;display: table-* 后不应该再使用 margin 或者 float;

不滥用 Float

Float在渲染时计算量比较大,尽量减少使用。

动画性能优化

动画的实现原理,是利用了人眼的“视觉暂留”现象,在短时间内连续播放数幅静止的画面,使肉眼因视觉残象产生错觉,而误以为画面在“动”。

动画的基本概念:

帧:在动画过程中,每一幅静止画面即为一“帧”;帧率:即每秒钟播放的静止画面的数量,单位是fps(Frame per second);帧时长:即每一幅静止画面的停留时间,单位一般是ms(毫秒);跳帧(掉帧/丢帧):在帧率固定的动画中,某一帧的时长远高于平均帧时长,导致其后续数帧被挤压而丢失的现象。

一般浏览器的渲染刷新频率是 60 fps,所以在网页当中,帧率如果达到 50-60 fps 的动画将会相当流畅,让人感到舒适。

如果使用基于 java 的动画,尽量使用 requestAnimationFrame. 避免使用 setTimeout, setInterval.避免通过类似 jQuery animate()-style 改变每帧的样式,使用 CSS 声明动画会得到更好的浏览器优化。使用 translate 取代 absolute 定位就会得到更好的 fps,动画会更顺滑。

多利用硬件能力,如通过 3D 变形开启 GPU 加速

一般在 Chrome 中,3D或透视变换(perspective transform)CSS属性和对 opacity 进行 CSS 动画会创建新的图层,在硬件加速渲染通道的优化下,GPU 完成 3D 变形等操作后,将图层进行复合操作(Compesite Layers),从而避免触发浏览器大面积重绘和重排。

注:3D 变形会消耗更多的内存和功耗。

使用 translate3d 右移 500px 的动画流畅度要明显优于直接使用 left:

测试代码:

提升 CSS 选择器性能

CSS 选择器对性能的影响源于浏览器匹配选择器和文档元素时所消耗的时间,所以优化选择器的原则是应尽量避免使用消耗更多匹配时间的选择器。而在这之前我们需要了解 CSS 选择器匹配的机制, 如子选择器规则:

我们中的大多数人都是从左到右的阅读习惯,会习惯性的设定浏览器也是从左到右的方式进行匹配规则,推测这条规则的开销并不高。

我们会假设浏览器以这样的方式工作:寻找 id 为 header 的元素,然后将样式规则应用到直系子元素中的 a 元素上。我们知道文档中只有一个 id 为 header 的元素,并且它只有几个 a 元素的子节点,所以这个 CSS 选择器应该相当高效。

事实上,却恰恰相反,CSS 选择器是从右到左进行规则匹配。了解这个机制后,例子中看似高效的选择器在实际中的匹配开销是很高的,浏览器必须遍历页面中所有的 a 元素并且确定其父元素的 id 是否为 header 。

如果把例子的子选择器改为后代选择器则会开销更多,在遍历页面中所有 a 元素后还需向其上级遍历直到根节点。

理解了CSS选择器从右到左匹配的机制后,明白只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的选择符,或者因为不匹配而退出。我们把最右边选择符称之为关键选择器。

1、避免使用通用选择器

浏览器匹配文档中所有的元素后分别向上逐级匹配 class 为 content 的元素,直到文档的根节点。因此其匹配开销是非常大的,所以应避免使用关键选择器是通配选择器的情况。

2、避免使用标签或 class 选择器限制 id 选择器

3、避免使用标签限制 class 选择器

4、避免使用多层标签选择器。使用 class 选择器替换,减少css查找

5、避免使用子选择器

6、使用继承

mscs相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏