目标:
开发高性能,可扩展的WEB应用。
1.WEB应用的分层
a.前端
b.后端
a.前端优化的重要性。分析工具GA和YSLOW
1.一个request之前要做的优化。
2.不要紧盯WEB后端优化。尽可能的访问服务器之前,消灭掉request.
前端优化的方法
1.减少http请求。
方法:合并图片:使用CSS或者HTML的MAP标签来定位。
合并脚本和样式表:视情况而定。同一功能的耦合在一个脚本发布。如果是landing page和index页可以考虑使用内联脚 本和CSS的方法
2.缓存图片和脚本.
方法:再web服务器设置Expires头。据统计大概60%以上用户带有完整缓存。要做的就是发布JS,CSS之类的脚本要带有版本号。 应对及时更新。
3.压缩一些组件。
方法:压缩的是XML,JSON。不要压缩图片。图片应该由本身格式来压缩优化如PNG,GIF,JPG。APACHE1.x和2.x配置不同。
4.样式表的位置。
方法:尽可能的放在顶部。LINK要放到HEAD之中,不要使用@import.可能还会最后下载。
5.js脚本放在底部
方法:尽可能的放在底部。视情况而定,有些js控制显示的要放在上面了。增加并行下载的能力。视CPU和带宽来决定。
6.使用外部的CSS和JS
方法:方便缓存。合并压缩CSS.工具有JSMIN和YUI COMPRESSOR。首页和着陆页使用内联较好。
前端技术推荐:CSS框架 960GRID网格展示和JS框架JQUERY。(浏览器兼容性佳)。
b.后端优化。(Java)
本质:web服务器的集群-》分布式缓存-》数据库集群。
1.WEB服务器集群:
选择:nginx,apache,lighttpd 线程模型。
apache:稳定。多进程开销大,并发处理能力低。相对安全。子进程崩溃不影响其他的进程。并发数100左右可以考虑。
高性能推荐:nginx.普及门户高稳定性 介于apache和lighttpd之间。CPU内存占用非常之低。高并发APACHE线程过多导致死掉,只能重启。。lighttpd图片服务器。
使用情况:
nginx:163,renren,douban,sina,qq 版本各异。。。
lighttpd:未知。flickr图片服务器。早期豆瓣。
apache:很多了。
负载均衡:DNS.HAPROXY 4层负载。
2.分布式缓存
没什么疑问了 当下最流行memcached.客户端分布式。设计缓存一定要注意的是缓存是不可靠的。命中率的问题。缓存的扩展为key的md5(十六进制字符串)加密。截取前5位转 十进制,然后取余数。% 值就是服务器编号。
3.数据库(MySQL)
最终思想为读写分离。选择合适的存储引擎(MyISAM,INNODB)。索引的优化。
存储引擎:
选择合适的存储引擎需要如下考虑:1事物。2.并发。
1.事务,如果支持事务的话,不用考虑了直接使用innodb.
2.并发,多查询少写入。最好为MyISAM.多写入多查询那种。适合Innodb。因为Innodb本身是行锁。批量更新。多查询还是MyISAM。
对经常查询的数据库加上缓存设置。线程池的优化。
索引:
1.多查询的表 要加索引。同样的索引带来的副作用就是插入更新的缓慢。再就是占用硬盘空间。
2.要注意索引的顺序。比如 firstname加索引 lastname没有加。如果 lastname在firstname之前索引就失效。
3.要把列单独隔离,不要对列进行操作。如where DATE_FOMAT(reportdate)=?
又出现一个问题。如何避免JOIN查询。
非范式化。KEY-VALUE.数据库。最近研究couchdb apache ab -n1000 -c200 request/s 2590.无优化。优点JSON。直接返回JSON。
MySQL方案。。存储过程+shell
其他选择memcachedb.(memcached协议+伯克利DB),MongoDB。是对关系型数据库的一个弥补。
主从复制+MySQL Proxy 。或者 水平分区。userid%10 垂直分区 。不相关的分库。。Spock Proxy。HiveDB
分享到:
相关推荐
以上所述都是Web高性能开发中的核心知识点,理解和掌握这些技巧,能有效提升网页的加载速度和用户体验,对于现代Web应用来说至关重要。在实际开发中,还需要根据具体项目和用户需求,灵活应用这些优化策略。
【标题】:“Web随笔代码”通常指的是与Web开发相关的代码片段、实验项目或教学示例,这些内容可能涵盖HTML、CSS、JavaScript等基础技术,也可能涉及到更高级的框架如React、Vue或Angular,以及后端开发技术如PHP、...
总之,【DCSweb随笔】这篇博文可能涵盖了DCS系统开发的多个方面,包括但不限于源码设计、工具应用以及数据库结构。对于想要了解DCS系统工作原理、开发流程或者寻求相关工具使用的读者来说,这将是一篇非常有价值的...
另外,无障碍性(Web Accessibility)和SEO优化也是现代前端开发者需要关注的领域,良好的无障碍性和搜索引擎友好性能让网站更好地服务于各种用户和被搜索引擎识别。 最后,随着前端技术的发展,前端开发者还需要...
**Fiddler——Web调试利器** Fiddler是一款强大的Web调试...总的来说,Fiddler是开发者、测试人员不可或缺的工具之一,通过其强大的功能,我们可以深入了解Web应用的工作原理,提升开发效率,确保产品的质量和安全性。
3. **Web服务接口**:开发人员可以通过API调用搜索服务,构建自定义搜索应用。 总之,MOSS 2007的搜索功能强大而灵活,为企业的信息管理和知识共享提供了坚实的基础。理解并充分利用这些特性,能够显著提升工作效率...
这篇博客文章“TT随笔三 前台公共功能猜想”可能探讨了在Web应用开发中,如何设计和实现前台公共功能的策略和思路。在Web应用的前端部分,公共功能通常指的是那些多个页面或模块共享的组件、服务或者交互逻辑,比如...
开发随笔部分,可能包含了作者在项目开发过程中的心得体会,包括遇到的问题、解决方案、最佳实践等。这些内容可以帮助我们学习到实际开发中的技巧和经验,避免重蹈覆辙。 源码解读部分,涉及到了React和Vue两个前端...
7. **Web Workers和Web Storage**:Web Workers允许多线程处理,提高计算密集型任务的性能;Web Storage(包括localStorage和sessionStorage)提供了更大的存储空间,以保存用户数据。 8. **Web Components**:通过...
本篇随笔将深入探讨Ibatis的核心概念、使用方法以及它在实际开发中的应用。 一、Ibatis概述 Ibatis是由Apache软件基金会维护的项目,它的设计目标是简化Java应用与数据库之间的交互,避免了传统的JDBC代码编写过程...
C#(读作"C sharp")是一种面向对象的编程语言,由微软公司开发,主要用于构建Windows应用程序、Web应用以及移动应用。它具有简洁、类型安全、性能高效的特点,广泛应用于游戏开发、企业软件和云计算平台。 1. 类与...
在JavaScript开发过程中,随着项目...总的来说,动态加载JS和文件是现代Web开发中的重要技术,它能够显著提升用户体验,优化资源利用率。通过合理地运用各种动态加载策略和工具,可以更好地管理和控制应用程序的性能。
他还可能介绍了现代Web开发框架(如React、Vue、Angular)的使用,以及如何将JavaScript应用于服务器端(Node.js)的开发。 综上所述,"dahong:个人技术随笔"是一个涵盖广泛且深入的IT学习资源,对于想要提升...
Log4j2手册详细介绍了该库的各个方面,包括架构、迁移、API、配置、Web应用程序集成、插件、查找、Appenders、布局、过滤器、异步记录器、无垃圾日志记录、JMX、日志分离以及如何扩展Log4j。 Log4j2是E.U.SEMPER...
1. Web Workers:后台多线程处理,提高复杂计算性能,不影响页面响应速度。 2. Web Sockets:实现双向实时通信,适用于聊天室、在线游戏等场景。 七、地理定位API HTML5提供了地理定位API,允许网站获取用户的地理...
它是Web开发三大核心技术之一,与HTML和CSS共同构建了互联网的动态和交互性。JavaScript的核心特性包括函数、原型、闭包、异步处理等,这些是理解和掌握JavaScript的基础。 1. **函数**:JavaScript中的函数是可...
性能优化 VuePress和GitBook 半小时硬核理财入门 精彩待续... 学习资源 计划 以下是笔者往后的计划,计划执行的先后顺序,视情况而定。 webpack原理及源码分析 精彩待续... Vue原理及源码分析 精彩待续... 小程序...
1. **Web开发框架**:使用如PHP、Python或Java等编程语言,配合相关Web框架构建网站。 2. **数据库管理**:MySQL或类似的数据库管理系统用于存储用户信息、文章内容和评论数据。 3. **前端技术**:HTML、CSS和...
通过研究源代码,可以深入理解Web开发的流程和技术,同时,也可以尝试为其开发新的功能或主题,锻炼编程和项目管理能力。 总的来说,Halo博客系统 v1.0.0.beta8不仅是一个实用的建站工具,也是学习和探索Web技术的...
【标签】"blog"表明这是一个关于博客开发和管理的项目,涉及的技术栈主要围绕Java和Web开发,可能涉及到的技术有Spring Boot、MyBatis、Thymeleaf、Hibernate、MySQL等。 从【压缩包子文件的文件名称列表】"DBlog...