性能优化

前端性能优化相关问题

不羁岁月 提交于 2019-12-06 19:28:23
前端优化搜索引擎(seo): 合理的title,description,keywords 搜索引擎对这三项的权重逐个减小:title值强调重点即可,关键词设定要突出,重要的关键词不要出现超过两次,而且要靠前,不同页面的title有所不同;description围绕网站主题内容和目标关键字,对网站做概要介绍,要能突出特点,体现优势,不过分堆砌关键字,不同页面的description有所不同;keyword应将title中的关键词,包括长尾中的段关键词罗列。 语义化标签让搜索引擎容易理解网页:恰当使用语义化的html标签、class类名等内容,让页面具有良好的结构和含义,便于浏览器、搜索引擎解析。网站的导航尽量使用纯文字进行导航。 重要内容的html代码放在最前面:seo抓取html顺序是由上至下。 重要内容不用js输出:爬虫不会执行js获取内容。 少用iframe:搜索引擎不会抓取iframe中的内容。 非装饰性图片必须加alt。 提高网站速度:网站速度是搜索引擎排序的一个重要指标。 如何进行网站性能优化: 减少http请求:合并css、合并js、利用css sprtes图片精灵合并图片、用LazyLoad Images使得页面刚加载时减少http请求数。 将css放在页面最上部,使用<link>引入,不使用@import编写样式。 将js放在页面最下面,如果页面解析时就需要用到js

前端性能优化 css和js的加载与执行

╄→гoц情女王★ 提交于 2019-12-06 15:56:23
一个网站在浏览器端是如何进行渲染的? html本身首先会被渲染成 DOM 树,实际上 html 是最先通过网址请求过来的,请求过来之后,html 本身会由一个字节流转化成一个字符流,浏览器端拿的就是字符流,然后通过词法分析之后,将相应的语法分析成相应的 token ,比如说 header token, 转化不同的 token tag ,然后通过 token 类型 append 到 dom 树。 遇到 link token tag,然后去请求 css ,请求过来之后再去对 css 进行解析,生成 CSSOM ,然后和 DOM 树进行结合形成 Render Tree 这样的渲染树。然后再进行布局和渲染。 遇到 script tag ,然后去请求 JS 相关的 web 资源,请求回来的 js 会交给浏览器的 v8 引擎进行解析, HTML渲染过程的一些特点 1、顺序执行 因为他是使用词法分析的能力,从上到下依次分析整个html,tag 相应的情况,所以第一个特点是顺序执行。词法分析是对 html 这个文档解析的一个方式,对 tag 依次从上到下解析,这个从上到下决定了很多阻塞的情况。 2、并发加载 我们的html中可能会引入很多的 css,js 的 web 资源,这些 web 资源在浏览器端是并发加载的,这里需要优化的一点就是这个并发加载过程的并发度是受我们浏览器域名限制的。所以会设置

MySQL批量SQL插入性能优化

只谈情不闲聊 提交于 2019-12-06 14:47:21
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。 经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: MySQL INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0); INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1); 1 2 3 4 INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0); INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1',

PHP性能优化的小技巧

余生颓废 提交于 2019-12-06 14:43:46
今天我们来分享10条PHP性能优化的小技巧: (1)循环内部不要声明变量,尤其是对象这样的变量 (2)foreach效率更高,尽量用foreach代替while和for循环 (3)在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环放在外层,从而减少cpu跨循环层的次数,优化程序性能 (4)用单引号替代双引号引用字符串以实现PHP性能优化 (5)用i+=1代替i=i+1。 符合c/c++的习惯,效率还高 (6)优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作,达到PHP性能优化的目的 (7)尽量的少进行文件操作,虽然PHP的文件操作效率也不低的 (8)在可以用PHP内部字符串操作函数的情况下,不要用正则表达式 (9)尽可能的使用PHP内部函数 (10)feof、fgets、fopen、在可以用file_get_contents替代file、系列方法的情况下,尽量用 file_get_contents,因为它的效率高得多。 但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题 扫一扫上方二维码关注我们,可获得更多资讯! 来源: oschina 链接: https://my.oschina.net/u/2888481/blog/738433

for循环实战性能优化

≡放荡痞女 提交于 2019-12-06 12:59:21
笔者在《 for循环实战性能优化 》中提出了五种提升for循环性能的优化策略,这次我们在其中嵌套循环优化小循环驱动大循环的基础上,借助Map高效的查询性能来优化双层for循环。 如果小循环和大循环的集合元素数量分别为M和N,则双层For循环的循环次数是M*N,随着M和N的增长,对性能的影响越来越大。因此,本文考虑进一步优化。利用下面的代码来模拟测试两种情况的性能: import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public class ForUpdate { public static void main(String[] args) { // for (int i = 0; i < 10000; i += 10) { // loopGivenNum(i); // } for (int i = 10000; i < 100000; i += 10000) { loopGivenNum(i); } System.out.println("----- done -----"); } private static void loopGivenNum

性能优化总结篇

女生的网名这么多〃 提交于 2019-12-06 12:35:43
参加工作十一个年头了,从最初为团队的慢SQL做性能优化,到主导推动压力测试完成性能指标,再到后来紧急救火处理各类线上性能问题,对常见的性能问题及其分类在此也做个总结。有些人认为做性能优化并没有那么复杂,不就是做压力测试吗,然后哪里有性能瓶颈就解决哪里不就可以了吗?然而现实情况并不会如此简单,比如系统可能是遗留的老系统,也或者耦合过多不做一定的改造很难单独某个模块进行压力测试,甚至是压力测试中性能表现很好但线上却出了问题。在进行性能优化前你要对系统有个全局的认识,解决手段通常按紧迫程度也可以分即时参数调优类、短期编码救急类、长期架构优化类。 参数调优类按最常见出问题的顺序可分为: JVM参数调优、数据库连接池调优、Tomcat并发线程数等调优等 短期编码救急类的按出问题的顺序可分为: 慢SQL、不合理的循环操作、不合理的线程(池)模型、不合理的超时设置等 长期架构优化类的按出问题的顺序可分为: 应用单点设计、数据库单点设计、未异步化、长任务同步接口设计等 JVM参数调优可参考 《JVM垃圾回收那些事》 数据库连接池调优不同的连接池实现会有所不同,当然不同的连接池性能也差异不小,可自行搜索主流连接池性能基准测试结果对比 其他各类中间件的参数调优可参考阅读各中间件的user guide文档。 参数调优类性能优化见效最快,只要不是用了很偏门的中间件

Tomcat 7.0.x性能优化

大憨熊 提交于 2019-12-06 12:33:40
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 是目前的开发焦点。它在汲取了Tomcat 6.0.x优点的基础上,实现了对于Servlet 3.0、JSP 2.2和EL 2.2等特性的支持。除此以外的改进列表如下: · Web应用内存溢出侦测和预防 · 增强了管理程序和服务器管理程序的安全性 · 一般 CSRF保护 · 支持web应用中的外部内容的直接引用 · 重构 (connectors, lifecycle)及很多核心代码的全面梳理 1. 配置方法 启动内存参数的配置 tomcat/bin/catalina.bat 如果是linux 就是 catalina.sh 在rem 的后面增加如下参数 set JAVA_OPTS= -Xms256m -Xmx256m -XX:MaxPermSize=64m 修改Tomcat的JDK目录 打开tomcat/bin/catalina.bat 在最后一个rem后面增加 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0 增加虚拟目录 /tomcat/conf/server.xml 第一行是以前默认存在的,第二行是新增的 <Context path="" docBase="ROOT"

记一次结算程序的性能优化过程

☆樱花仙子☆ 提交于 2019-12-06 10:27:08
写于2017-10-6 背景:某项目结算程序,业务系统每日生成当天全量交易数据并上传至FTP,该结算程序从FTP中获取文件后解析交易数据,执行余额变更操作及登记资金流水。 第一轮压测结果:TPS=3 分析源码后发现,开发童鞋是串行单笔处理的,简化后的核心代码如下: //遍历每条交易数据 foreach(){ insertLogAndUpdateBalance(); } //启用事务 insertLogAndUpdateBalance(){ //插入资金流水 insertLog(); //更新余额 updateBalance(); } 第一轮改进方法: 1、改串行单笔处理为串行多笔处理 2、余额变更update转insert,即先记入余额流水表,再异步刷新回余额表 3、这里引入了一个新问题:如何保证余额不被扣成负数?该问题后面另起专题介绍。 简化后的核心代码 //遍历每批交易数据,每500条一批 foreachBatch(){ insertLogAndUpdateBalanceBatch(); } //启用事务 insertLogAndUpdateBalance(){ //插入资金流水 insertLogBatch(); //更新余额 updateBalanceBatch(); } 第二轮压测结果:TPS很不稳定,15 - 45之间 第二轮改进方法:

性能优化之代码优化

末鹿安然 提交于 2019-12-06 10:26:51
写于2017-10-11 背景:面试时我喜欢问候选人的一个问题是:是否有性能优化的经历与案例可以分享。大多数候选人一上来就说sql优化,甚至直接谈起如何建索引。诚然多数的性能问题是由于不合适的sql/索引引起,但是代码级别的优化,就真的没有可挖之处了吗? 本文笔者将根据实际项目中碰到的部分案例浅析代码优化那点事 1、Map实现Code2Name,减少时间复杂度 案例:已有学生信息列表,班级信息列表,翻译每个学生(只知道班级ID,不知道班级名称)所在的班级名 @Data public class Student { private int name; private int classId; //扩展属性 private String className; } @Data private class ClassInfo{ private int classId; private String ClassName; } public void translateClassName(List<Student> studentList, List<ClassInfo> classInfoList){ for(Student student : studentList){ for(ClassInfo classInfo : classInfoList){ if(student

终极手撕之架构大全:分布式+开源框架+微服务+性能优化,够不够?

谁都会走 提交于 2019-12-06 10:20:01
终极手撕之架构大全:分布式+开源框架+微服务+性能优化,够不够? 一只Tom猫4小时前 我要分享 之前有零零散散整理过一些专题给大家参考学习,这次一次性来个终极手撕之架构大全,包含开源框架、分布式、微服务、性能优化等四个大专题共17个小专题,全部一锅端,送给大家一起学习~ 注意:需要全部完整版架构大全答案的可以 【“点击我”免费领取】 《终极手撕之架构大全:分布式+开源框架+微服务+性能优化,够不够?》 01 开源框架(Spring +SpringMVC+Mybatis) 开源框架答案解析如下: 1.1 手撕开源框架之Spring 什么是 Spring 框架?Spring 框架有哪些主要模块? 使用 Spring 框架能带来哪些好处? 什么是控制反转(IOC) 请解释下 Spring 框架中的 IoC BeanFactory 和 和 ApplicationContext 有什么区别? Spring 有几种配置方式? 如何用基于 XML 配置的方式配置 Spring 如何用基于 Java 配置的方式配置 Spring 怎样用注解的方式配置 Spring 请解释 Spring Bean 的生命周期? Spring Bean 的作用域之间有什么区别? Spring 框架中的单例 Beans 是线程安全的么? 请举例说明如何在 Spring 中注入一个 Java Collection