A. web前端三大主流框架
随着互联网的发展,web前端框架越来越重要。目前,web前端三大主流框架分别为React、Vue和Angular。React由Facebook开发,采用JSX的语扒档法,使得开发者可以在JavaScript中编写HTML。Vue由Evan You于2014年创建,其核心库只关注视图层,非常容易上手。Angular是由Google开发的,是一个完整的框架,包含很多功能,如依赖注入、指令、服务等。
React是一个非常烂派流行的框架,已经成为许多大型公司使用的首选框架。它具有高性能和灵活性,可以构建单页面应用程序和复杂的用户界面。React还有一个庞大的生态系统,包括许多支持库和工具,使得开发者可以更加高效地构建应用程序。
Vue是一个轻量级框架,易于上手,因此成为了许多初学者的首选。Vue具有高度灵活性和可扩展性,并且支持组件化开发,可以有效地提高开发效率。Vue还拥有许多有用的功能,如指令、过滤器和混入等,使得开发者可以更加轻松地构建复杂的应用程序。
Angular是一个完整的框架,提供了许多功能,如依赖注入、模板语法、指令和服务等。它还支持TypeScript,这是一个强类型的JavaScript超集,可以在编译时检查类型错误。Angular还有一个庞大的社区和生态系统,使得开发者可以更加容易地解决问题和获得支持。
总的来说,React、Vue和Angular都是非常优秀的前端框架,每个框架都有其独特的优势和适用场景。开发饥此贺者可以根据自己的需求和技能水平选择适合自己的框架。在选择框架时,还需要考虑到其生态系统、支持库和工具等方面,以便更加高效地开发和维护应用程序。
B. 《High Performance Web Sites》txt下载在线阅读全文,求百度网盘云资源
《高性能网站建设指南》(Steve Souders)电子书网盘下载免费在线阅读
链接: https://pan..com/s/1HEvyNhrIx09IVxcSMO7I-w
书名:高性能网站建设指南
作者:Steve Souders
译者:刘彦博
豆瓣评分:8.5
出版社:电子工业出版社
出版年份:2008年
页数:146 页
内容简介:
本书结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。《高性能网站建设指南》内容丰富,主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、Gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、Ajax缓存技术和最小化技术等。《高性能网站建设指南》适合Web架构师、信息架构师、Web开发人员及产品经理阅读和参考。
作者简介:
Steve Souders在Yahoo!担任Chief Performance。他于2000年加盟Yahoo!,在该公司的很多平台和产品团队中工作过。在他到达今天这个位置之前,他就职于My Yahoo!开发团队。.
作为Chief Performance Yahoo!,他开发了一系列优秀软件,可以使网站访问速度变得更快。他构建了用于进行性能分析的工具,并将这些优秀软件和工具传播到Yahoo!的各个产品团队中。
在到Yahoo!之前,Steve就职于很多小型或中型公司,包括他和别人一起创办的两个公司——Helix Systems和CoolSync。
C. 我有一个网站是.NET做的,因为本人不懂.net就用ASP写了个简单的后台,结果经常出现'80004005' 错误
重要,因为颜色是整体风格的最集中的体现;如果颜色确定偏差将直接导致与所要表达风格的错位,大大降低效果.本人常使用的颜色如下:
3. 依据功能确定整体框架;
整体框架确定的出发点是对功能展现的效果上,以及操作简便性.
4. 统一风格,统一实现方式;
统一的目的是为了让使用者在使用本系统时,不论操作到那个功能模块,都感觉到本系统是一个统一融合的整体,就好像由一个人开发实现的;为什么要这样做呢?就好像一个人与一个人进行交流相对比较容易,只要清楚一个人的秉性就可以娴熟的与其交流,如果让这个人与十个人进行交流,并且在交流时经常更换人,可以想象这将是一件多么痛苦的事情啊!
统一风格主要有颜色、字体、按钮、列表、表单、报表等;
统一实现方式主要有添加、删除、修改、查询、分页等.
5. 页面细节决定系统专业程度;
经过对比以前系统和其他公司的系统,发现系统在细节上考虑的很是不足;分析比较专业的系统,发现其页面的框架和风格与我公司系统几乎差不说,但是在具体实现细节上,人家考虑的十分周到细致,这显然是通过多个项目积累出来的,而我公司往往每做一个新项目时,都会更换一套新的页面风格,给人新鲜感,其实经过几个项目观察下来其内部实现细节并没有多少累积,所有本人觉得不是在十分必要的情况下,不易经常更换页面的整体风格,而应该有一定的延续性,集中精力多从具体实现细节上下功夫,多从用户的使用体验上思考该如何实现,多完善实现的细节,最终实现一个非常专业的系统.
页面的细节如按钮大小、单元格宽度、列表大小、输入框录入字节多少控制、表单录入项的验证等等.
6. 用户体验决定系统品质;
关于用户体验是本人一直在思考的问题,到底如何才能提高用户体验呢?应从使用者的视觉感观、操作效果、思维过程等方面寻找答案,比如用红色作为企业级应用的主体色,就要很慎重了,因为红色是代表着激情、热烈与企业级应用的要求差距较大,这样就影响视觉效果;比如需要进行层次较多的选择时,以前会先用一个列表选择进去,再选择其相应的子选项进行查询、添加等操作,这样操作效果就很差很罗嗦,对于这样情况采用旁边放颗树进行选择,不失为一个好的表现形式;比如要实现一些审核性、流程性、过程性的业务,可以考虑采用流程图的形式,这样非常直观明了而且易操作;比如要常实现的添加、删除、修改、查询等操作时,如何在页面上组织它们才能使用户使用方便,这时就要考虑用户通常的思维过程是如何的,据此实现,用户使用起来就会方便舒心.
以上就是本人在项目开发过程中的几点体会,一直想写,今日终于完成,很是高兴!本人是想想写写思路比较凌乱,希望大家多批评指教,谢谢!
你看上面的行吗?
就你问题补充:
数据层性能 技巧 1 — 返回多个结果集 技巧 2 — 分页的数据访问 技巧 3 — 连接池 技巧 4 — ASP.NET 缓存 API 技巧 5 — 每请求缓存 技巧 6 — 后台处理 技巧 7 — 页输出缓存和代理服务器 技巧 8 — 运行 IIS 6.0(只要用于内核缓存) 技巧 9 — 使用 Gzip 压缩 技巧 10 — 服务器控件视图状态 小结 ==================================================== 使用 ASP.NET 编写 Web 应用程序的简单程度令人不敢相信。正因为如此简单,所以很多开发人员就不会花时间来设计其应用程序的结构,以获得更好的性能了。在本文中,我将讲述 10 个用于编写高性能 Web 应用程序的技巧。但是我并不会将这些建议仅局限于 ASP.NET 应用程序,因为这些应用程序只是 Web 应用程序的一部分。本文不作为对 Web 应用程序进行性能调整的权威性指南 — 一整本书恐怕都无法轻松讲清楚这个问题。请将本文视作一个很好的起点。 成为工作狂之前,我原来喜欢攀岩。在进行任何大型攀岩活动之前,我都会首先仔细查看指南中的路线,阅读以前游客提出的建议。但是,无论指南怎么好,您都需要真正的攀岩体验,然后才能尝试一个特别具有挑战性的攀登。与之相似,当您面临修复性能问题或者运行一个高吞吐量站点的问题时,您只能学习如何编写高性能 Web 应用程序。 我的个人体验来自在 Microsoft 的 ASP.NET 部门作为基础架构程序经理的经验,在此期间我运行和管理 ,帮助设计社区服务器的结构,社区服务器是几个着名 ASP.NET 应用程序(组合到一个平台的 ASP.NET Forums、.Text 和 nGallery)。我确信有些曾经帮助过我的技巧对您肯定也会有所帮助。 您应该考虑将应用程序分为几个逻辑层。您可能听说过 3 层(或者 n 层)物理体系结构一词。这些通常都是规定好的体系结构方式,将功能在进程和/或硬件之间进行了物理分离。当系统需要扩大时,可以很轻松地添加更多的硬件。但是会出现一个与进程和机器跳跃相关的性能下降,因此应该避免。所以,如果可能的话,请尽量在同一个应用程序中一起运行 ASP.NET 页及其相关组件。 因为代码分离以及层之间的边界,所以使用 Web 服务或远程处理将会使得性能下降 20% 甚至更多。 数据层有点与众不同,因为通常情况下,最好具有专用于数据库的硬件。然而进程跳跃到数据库的成本依然很高,因此数据层的性能是您在优化代码时首先要考虑的问题。 在深入应用程序的性能修复问题之前,请首先确保对应用程序进行剖析,以便找出具体的问题所在。主要性能计数器(如表示执行垃圾回收所需时间百分比的计数器)对于找出应用程序在哪些位置花费了其主要时间也非常有用。然而花费时间的位置通常非常不直观。 本文讲述了两种类型的性能改善:大型优化(如使用 ASP.NET 缓存),和进行自身重复的小型优化。这些小型优化有时特别有意思。您对代码进行一点小小的更改,就会获得很多很多时间。使用大型优化,您可能会看到整体性能的较大飞跃。而使用小型优化时,对于某个特定请求可能只会节省几毫秒的时间,但是每天所有请求加起来,则可能会产生巨大的改善。 数据层性能 谈到应用程序的性能调整,有一个试纸性的测试可用来对工作进行优先级划分:代码是否访问数据库?如果是,频率是怎样的?请注意,这一相同测试也可应用于使用 Web 服务或远程处理的代码,但是本文对这些内容未做讲述。 如果某个特定的代码路径中必需进行数据库请求,并且您认为要首先优化其他领域(如字符串操作),则请停止,然后执行这个试纸性测试。如果您的性能问题不是非常严重的话,最好花一些时间来优化一下与数据库、返回的数据量、进出数据库的往返频率相关的花费时间。 了解这些常规信息之后,我们来看一下可能会有助于提高应用程序性能的十个技巧。首先,我要讲述可能会引起最大改观的更改。 =============================== 技巧 1 — 返回多个结果集 仔细查看您的数据库代码,看是否存在多次进入数据库的请求路径。每个这样的往返都会降低应用程序可以提供的每秒请求数量。通过在一个数据库请求中返回多个结果集,可以节省与数据库进行通信所需的总时间长度。同时因为减少了数据库服务器管理请求的工作,还会使得系统伸缩性更强。 虽然可以使用动态 SQL 返回多个结果集,但是我首选使用存储过程。关于业务逻辑是否应该驻留于存储过程的问题还存在一些争议,但是我认为,如果存储过程中的逻辑可以约束返回数据的话(缩小数据集的大小、缩短网络上所花费时间,不必筛选逻辑层的数据),则应赞成这样做。 使用 SqlCommand 实例及其 ExecuteReader 方法填充强类型的业务类时,可以通过调用 NextResult 将结果集指针向前移动。图 1 显示了使用类型类填充几个 ArrayList 的示例会话。只从数据库返回您需要的数据将进一步减少服务器上的内存分配。 ================================== 技巧 2 — 分页的数据访问 ASP.NET DataGrid 具有一个很好的功能:数据分页支持。在 DataGrid 中启用分页时,一次会显示固定数量的记录。另外,在 DataGrid 的底部还会显示分页 UI,以便在记录之间进行导航。该分页 UI 使您能够在所显示的数据之间向前和向后导航,并且一次显示固定数量的记录。 还有一个小小的波折。使用 DataGrid 的分页需要所有数据均与网格进行绑定。例如,您的数据层需要返回所有数据,那么 DataGrid 就会基于当前页筛选显示的所有记录。如果通过 DataGrid 进行分页时返回了 100,000 个记录,那么针对每个请求会放弃 99,975 个记录(假设每页大小为 25 个记录)。当记录的数量不断增加时,应用程序的性能就会受到影响,因为针对每个请求必须发送越来越多的数据。 要编写性能更好的分页代码,一个极佳的方式是使用存储过程。图 2 显示了针对 Northwind 数据库中的 Orders 表进行分页的一个示例存储过程。简而言之,您此时要做的只是传递页索引和页大小。然后就会计算合适的结果集,并将其返回。 在社区服务器中,我们编写了一个分页服务器控件,以完成所有的数据分页。您将会看到,我使用的就是技巧 1 中讨论的理念,从一个存储过程返回两个结果集:记录的总数和请求的数据。 返回记录的总数可能会根据所执行查询的不同而有所变化。例如,WHERE 子句可用来约束返回的数据。为了计算在分页 UI 中显示的总页数,必须了解要返回记录的总数。例如,如果总共有 1,000,000 条记录,并且要使用一个 WHERE 子句将其筛选为 1000 条记录,那么分页逻辑就需要了解记录的总数才能正确呈现分页 UI。 ============================== 技巧 3 — 连接池 在 Web 应用程序和 SQL Server™ 之间设置 TCP 连接可能是一个非常消耗资源的操作。Microsoft 的开发人员到目前为止能够使用连接池已经有一段时间了,这使得他们能够重用数据库连接。他们不是针对每个请求都设置一个新的 TCP 连接,而是只在连接池中没有任何连接时才设置新连接。当连接关闭时,它会返回连接池,在其中它会保持与数据库的连接,而不是完全破坏该 TCP 连接。 当然,您需要小心是否会出现泄漏连接。当您完成使用连接时,请一定要关闭这些连接。再重复一遍:无论任何人对 Microsoft?.NET Framework 中的垃圾回收有什么评论,请一定要在完成使用连接时针对该连接显式调用 Close 或 Dispose。不要相信公共语言运行库 (CLR) 会在预先确定的时间为您清除和关闭连接。尽管 CLR 最终会破坏该类,并强制连接关闭,但是当针对对象的垃圾回收真正发生时,并不能保证。 要以最优化的方式使用连接池,需要遵守一些规则。首先打开连接,执行操作,然后关闭该连接。如果您必须如此的话,可以针对每个请求多次打开和关闭连接(最好应用技巧 1),但是不要一直将连接保持打开状态并使用各种不同的方法对其进行进出传递。第二,使用相同的连接字符串(如果使用集成身份验证的话,还要使用相同的线程标识)。如果不使用相同的连接字符串,例如根据登录的用户自定义连接字符串,那么您将无法得到连接池提供的同一个优化值。如果您使用集成身份验证,同时还要模拟大量用户,连接池的效率也会大大下降。尝试跟踪与连接池相关的任何性能问题时,.NET CLR 数据性能计数器可能非常有用。 每当应用程序连接资源时,如在另一个进程中运行的数据库,您都应该重点考虑连接该资源所花时间、发送或检索数据所花时间,以及往返的数量,从而进行优化。优化应用程序中任何种类的进程跳跃都是获得更佳性能的首要一点。 应用层包含了连接数据层、将数据转换为有意义类实例和业务流程的逻辑。例如社区服务器,您要在其中填充Forums 或 Threads集合,应用业务规则(如权限);最重要的是要在其中执行缓存逻辑。 ================================ 技巧 4 — ASP.NET 缓存 API 编写应用程序代码行之前,一个首要完成的操作是设计应用层的结构,以便最大化利用 ASP.NET 缓存功能。 如果您的组件要在 ASP.NET 应用程序中运行,则只需在该应用程序项目中包括一个 System.Web.dll 引用。当您需要访问该缓存时,请使用 HttpRuntime.Cache 属性(通过 Page.Cache 和 HttpContext.Cache 也可访问这个对象)。 对于缓存数据,有几个规则。首先,如果数据可能会多次使用时,则这是使用缓存的一个很好的备选情况。第二,如果数据是通用的,而不特定于某个具体的请求或用户时,则也是使用缓存的一个很好的备选情况。如果数据是特定于用户或请求的,但是寿命较长的话,仍然可以对其进行缓存,但是这种情况可能并不经常使用。第三,一个经常被忽略的规则是,有时可能您缓存得太多。通常在一个 x86 计算机上,为了减少内存不足错误出现的机会,您会想使用不高于 800MB 的专用字节运行进程。因此缓存应该有个限度。换句话说,您可能能够重用某个计算结果,但是如果该计算采用 10 个参数的话,您可能要尝试缓存 10 个排列,这样有可能给您带来麻烦。一个要求 ASP.NET 的最常见支持是由于过度缓存引起的内存不足错误,尤其是对于大型数据集。 图 3 ASP.NET缓存 缓存有几个极佳的功能,您需要对它们有所了解。首先,缓存会实现最近最少使用的算法,使得 ASP.NET 能够在内存运行效率较低的情况下强制缓存清除 - 从缓存自动删除未使用过的项目。第二,缓存支持可以强制失效的过期依赖项。这些依赖项包括时间、密钥和文件。时间经常会用到,但是对于 ASP.NET 2.0,引入了一个功能更强的新失效类型:数据库缓存失效。它指的是当数据库中的数据发生变化时自动删除缓存中的项。有关数据库缓存失效的详细信息,请参阅 MSDN?Magazine 2004 年 7 月的 Dino Esposito Cutting Edge 专栏。要了解缓存的体系结构,请参阅图 3。 ======================= 技巧 5 — 每请求缓存 在本文前面部分,我提到了经常遍历代码路径的一些小改善可能会导致较大的整体性能收益。对于这些小改善,其中有一个绝对是我的最爱,我将其称之为“每请求缓存”。 缓存 API 的设计目的是为了将数据缓存较长的一段时间,或者缓存至满足某些条件时,但每请求缓存则意味着只将数据缓存为该请求的持续时间。对于每个请求,要经常访问某个特定的代码路径,但是数据却只需提取、应用、修改或更新一次。这听起来有些理论化,那么我们来举一个具体的示例。 在社区服务器的论坛应用程序中,页面上使用的每个服务器控件都需要个性化的数据来确定使用什么外观、使用什么样式表,以及其他个性化数据。这些数据中有些可以长期缓存,但是有些数据却只针对每个请求提取一次,然后在执行该请求期间对其重用多次,如要用于控件的外观。 为了达到每请求缓存,请使用 ASP.NET HttpContext。对于每个请求,都会创建一个 HttpContext 实例,在该请求期间从 HttpContext.Current 属性的任何位置都可访问该实例。该 HttpContext 类具有一个特殊的 Items 集合属性;添加到此 Items 集合的对象和数据只在该请求持续期间内进行缓存。正如您可以使用缓存来存储经常访问的数据一样,您也可以使用 HttpContext.Items 来存储只基于每个请求使用的数据。它背后的逻辑非常简单:数据在它不存在的时候添加到 HttpContext.Items 集合,在后来的查找中,只是返回 HttpContext.Items 中的数据。 ===================== 技巧 6 — 后台处理 通往代码的路径应该尽可能快速,是吗?可能有时您会觉得针对每个请求执行的或者每 n 个请求执行一次的任务所需资源非常多。发送电子邮件或者分析和验证传入数据就是这样的一些例子。 剖析 ASP.NET Forums 1.0 并重新构建组成社区服务器的内容时,我们发现添加新张贴的代码路径非常慢。每次添加新张贴时,应用程序首先需要确保没有重复的张贴,然后必须使用“坏词”筛选器分析该张贴,分析张贴的字符图释,对张贴添加标记并进行索引,请求时将张贴添加到合适的队列,验证附件,最终张贴之后,立即向所有订阅者发出电子邮件通知。很清楚,这涉及很多操作。 经研究发现,大多数时间都花在了索引逻辑和发送电子邮件上。对张贴进行索引是一个非常耗时的操作,人们发现内置的 System.Web.Mail 功能要连接 SMYP 服务器,然后连续发送电子邮件。当某个特定张贴或主题领域的订阅者数量增加时,执行 AddPost 功能所需的时间也越来越长。 并不需要针对每个请求都进行电子邮件索引。理想情况下,我们想要将此操作进行批处理,一次索引 25 个张贴或者每五分钟发送一次所有电子邮件。我们决定使用以前用于对数据缓存失效进行原型设计的代码,这个失效是用于最终进入 Visual Studio® 2005 的内容的。 System.Threading 命名空间中的 Timer 类非常有用,但是在 .NET Framework 中不是很有名,至少对于 Web 开发人员来说是这样。创建之后,这个 Timer 类将以一个可配置的间隔针对 ThreadPool 中的某个线程调用指定的回调。这就表示,您可以对代码进行设置,使其能够在没有对 ASP.NET 应用程序进行传入请求的情况下得以执行,这是后台处理的理想情况。您还可以在此后台进程中执行如索引或发送电子邮件之类的操作。 但是,这一技术有几个问题。如果应用程序域卸载,该计时器实例将停止触发其事件。另外,因为 CLR 对于每个进程的线程数量具有一个硬性标准,所以可能会出现这样的情形:服务器负载很重,其中计时器可能没有可在其基础上得以完成的线程,在某种程度上可能会造成延迟。ASP.NET 通过在进程中保留一定数量的可用线程,并且仅使用总线程的一部分用于请求处理,试图将上述情况发生的机会降到最低。但是,如果您具有很多异步操作时,这可能就是一个问题了。 这里没有足够的空间来放置该代码,但是您可以下载一个可以看懂的示例,网址是 。请了解一下 Blackbelt TechEd 2004 演示中的幻灯片和演示。 ========================= 技巧 7 — 页输出缓存和代理服务器 ASP.NET 是您的表示层(或者说应该是您的表示层);它由页、用户控件、服务器控件(HttpHandlers 和 HttpMoles)以及它们生成的内容组成。如果您具有一个 ASP.NET 页,它会生成输出(HTML、XML、图像或任何其他数据),并且您针对每个请求运行此代码时,它都会生成相同的输出,那么您就拥有一个可用于页输出缓存的绝佳备选内容。 将此行内容添加页的最上端 <%@ Page OutputCache VaryByParams="none" Duration="60" %> 就可以高效地为此页生成一次输出,然后对它进行多次重用,时间最长为 60 秒,此时该页将重新执行,输出也将再一次添加到 ASP.NET 缓存。通过使用一些低级程序化 API 也可以完成此行为。对于输出缓存有几个可配置的设置,如刚刚讲到的 VaryByParams 属性。VaryByParams 刚好被请求到,但还允许您指定 HTTP GET 或 HTTP POST 参数来更改缓存项。例如,只需设置 VaryByParam="Report" 即可对 default.aspx?Report=1 或 default.aspx?Report=2 进行输出缓存。通过指定一个以分号分隔的列表,还可以指定其他参数。 很多人都不知道何时使用输出缓存,ASP.NET 页还会生成一些位于缓存服务器下游的 HTTP 标头,如 Microsoft Internet Security and Acceleration Server 或 Akamai 使用的标头。设置了 HTTP 缓存标头之后,可以在这些网络资源上对文档进行缓存,客户端请求也可在不必返回原始服务器的情况下得以满足。 因此,使用页输出缓存不会使得您的应用程序效率更高,但是它可能会减少服务器上的负载,因为下游缓存技术会缓存文档。当然,这可能只是匿名内容;一旦它成为下游之后,您就再也不会看到这些请求,并且再也无法执行身份验证以阻止对它的访问了。 ======================== 技巧 8 — 运行 IIS 6.0(只要用于内核缓存) 如果您未运行 IIS 6.0 (Windows Server? 2003),那么您就错过了 Microsoft Web 服务器中的一些很好的性能增强。在技巧 7 中,我讨论了输出缓存。在 IIS 5.0 中,请求是通过 IIS 然后进入 ASP.NET 的。涉及到缓存时,ASP.NET 中的 HttpMole 会接收该请求,并返回缓存中的内容。 如果您正在使用 IIS 6.0,就会发现一个很好的小功能,称为内核缓存,它不需要对 ASP.NET 进行任何代码更改。当请求由 ASP.NET 进行输出缓存时,IIS 内核缓存会接收缓存数据的一个副本。当请求来自网络驱动程序时,内核级别的驱动程序(无上下文切换到用户模式)就会接收该请求,如果经过了缓存,则会将缓存的数据刷新到响应,然后完成执行。这就表示,当您将内核模式缓存与 IIS 和 ASP.NET 输出缓存一起使用时,就会看到令人不敢相信的性能结果。在 ASP.NET 的 Visual Studio 2005 开发过程中,我一度是负责 ASP.NET 性能的程序经理。开发人员完成具体工作,但是我要看到每天进行的所有报告。内核模式缓存结果总是最有意思的。最常见的特征是网络充满了请求/响应,而 IIS 运行时的 CPU 使用率只有大约 5%。这太令人震惊了!当然使用 IIS 6.0 还有一些其他原因,但是内核模式缓存是其中最明显的一个。 =========================== 技巧 9 — 使用 Gzip 压缩 虽然使用 gzip 并不一定是服务器性能技巧(因为您可能会看到 CPU 使用率的提高),但是使用 gzip 压缩可以减少服务器发送的字节数量。这就使人们觉得页速度加快了,并且还减少了带宽的用量。根据所发送数据、可以压缩的程度以及客户端浏览器是否支持(IIS 只会向支持 gzip 压缩的客户端发送经过 gzip 压缩的内容,如 Internet Explorer 6.0 和 Firefox),您的服务器每秒可以服务于更多的请求。实际上,几乎每当您减少所返回数据的数量时,都会增加每秒请求数。 Gzip 压缩已经内置到 IIS 6.0 中,并且其性能比 IIS 5.0 中使用的 gzip 压缩要好的多,这是好消息。但不幸的是,当尝试在 IIS 6.0 中打开 gzip 压缩时,您可能无法在 IIS 的属性对话中找到该设置。IIS 小组在该服务器中置入了卓越的 gzip 功能,但是忘了包括一个用于启用该功能的管理 UI。要启用 gzip 压缩,您必须深入到 IIS 6.0 的 XML 配置设置内部(这样不会引起心脏虚弱)。顺便提一句,这归功于 OrcsWeb 的 Scott Forsyth,他帮助我提出了在 OrcsWeb 上宿主的 服务器的这个问题。 本文就不讲述步骤了,请阅读 Brad Wilson 的文章,网址是 IIS6 Compression。还有一篇有关为 ASPX 启用压缩的知识库文章,网址是 Enable ASPX Compression in IIS。但是您应该注意,由于一些实施细节,IIS 6.0 中不能同时存在动态压缩和内核缓存。 ============================== 技巧 10 — 服务器控件视图状态 视图状态是一个有趣的名称,用于表示在所生成页的隐藏输出字段中存储一些状态数据的 ASP.NET。当该页张贴回服务器时,服务器可以分析、验证、并将此视图状态数据应用回该页的控件树。视图状态是一个非常强大的功能,因为它允许状态与客户端一起保持,并且它不需要 cookie 或服务器内存即可保存此状态。很多 ASP.NET 服务器控件都使用视图状态来保持在与页元素进行交互期间创建的设置,例如保存对数据进行分页时显示的当前页。 然而使用视图状态也有一些缺点。首先,服务或请求页时,它都会增加页的总负载。对张贴回服务器的视图状态数据进行序列化或取消序列化时,也会发生额外的开销。最后,视图状态会增加服务器上的内存分配。 几个服务器控件有着过度使用视图状态的趋势,即使在并不需要的情况下也要使用它,其中最着名的是 DataGrid。ViewState 属性的默认行为是启用,但是如果您不需要,则可以在控件或页级别关闭。在控件内,只需将 EnableViewState 属性设置为 false,或者在页中使用下列设置即可对其进行全局设置: <%@ Page EnableViewState="false" %> 如果您不回发页,或者总是针对每个请求重新生成页上的控件,则应该在页级别禁用视图状态。 ============================== 小结 我为您讲述了一些我认为在编写高性能 ASP.NET 应用程序时有所帮助的技巧。正如我在本文前面部分提到的那样,这是一个初步指南,并不是 ASP.NET 性能的最后结果。(有关改善 ASP.NET 应用程序性能的信息,请参阅 Improving ASP.NET Performance。)只有通过自己的亲身体验才能找出解决具体性能问题的最好方法。但是,在您的旅程中,这些技巧应该会为您提供一些好的指南。在软件开发中,几乎没有绝对的东西;每个应用程序都是唯一的。 请参阅提要栏“Common Performance Myths”。 Rob Howard 是 Telligent Systems 的创始人,专门从事高性能 Web 应用程序、知识库管理和协作系统方面的工作。Rob 以前受雇于 Microsoft,他在那里帮助设计了 ASP.NET 1.0、1.1 和 2.0 的基础结构。要联系 Rob,请访问 [email protected]。
D. 求推荐几本书。关于互联网运营和通过互联网盈利的一些方面的书籍
a.行业了解
《沸腾十五年》
《浪潮之巅》
《互联网之达芬奇密码》
《不一样的平台,移动互联网时代的商业模式创新》
《电商的战国》
《我看电商》
《改变中国互联网未来的六大力量》
《信息规则 :网络经济的策略指导》
《超级数字天才:为什么用数字思考是变聪明的新方法》
b.产品了解
《人人都是产品经理》
《结网》
《设计沟通十器》
《产品经理手册》
《神一样的产品经理》
《启示录》
《软件工程:实践者的研究方法》
《手机研发流程与质量管理》
c.交互设计、用户体验
《About Face3交互设计精髓 》
《触动人心》
《SNS网站构建》
《社交网站界面设计》
《web信息架构,设计大型网站》
《web导航设计》
《web设计禁忌》
《移动应用UI设计模式》
筑巢引凤、简约至上、见微知着
《yes 产品经理》
d.创业数据,理解商业思维
《精益创业》
《精益创业实战》
《创业四步法》这本书早于《精益创业》)《创业者圣经》
《丰田汽车案例:精益制造的14项管理原则》
《创业三十六条军规》
《精益六西格玛-精益生产与六西格玛的完美整合》
《平台战略》
《电子商务管理视角》
《营销管理》
《运营管理》(这里的运营是企业运营管理的意思)
《项目管理知识体系指南》
《量化,大数据时代的企业管理》
2.消得人憔悴:依据所处职位的职责,寻求最优解决之道
a.数据分析
基础书籍:
《网站分析基础教程》
《网站分析实战:如何以数据驱动决策,提升网站价值》
《流量的秘密:Google Analytics网站分析与优化技巧》第二版
技能进阶:
《精通Web Analytics 2.0:用户中心科学与在线统计艺术》
数据呈现:
《谁说菜鸟不会数据分析》2013最新版
《Excel商务图表应用与技巧108例(双色版)》
《鲜活的数据:数据可视化指南》
拓展训练:
《大数据时代》
《R语言实战》
具体主题分析
搜索《精通搜索分析》
淘宝《玩法变了:淘宝卖家运赢弱品牌时代》
社交网站《社交网站的数据挖掘与分析》(懂技术才能读)
性能优化(粗读)
《构建高性能web站点》
《网站性能监测与优化》
《大规模web服务开发技术》
《高性能网站建设进阶指南》
b.流量(用户推广)
网络营销
《锦囊妙计,网站推广101招》《网络营销推广实战宝典》问题查找即可
《正在爆发的营销革命-社会化网络营销指南》
《湿营销》
《行动的召唤》《等待猫吠》
《SEO实战密码》《SEO艺术》
《搜索引擎营销-网站流量大提速》
《搜索引擎优化:每天一小时》《搜索引擎优化宝典》
内容营销
《内容营销,网络营销的杀手级武器》
c.留存
内容
《胜于言传:网站内容制胜宝典》
《与五十位主编面对面》
《web内容策略指南》
活动
《商品促销实战技巧一本全》
作者:
王志纲《找魂》《推手》。。。
熊大寻《江山入划》
叶茂中《想》与《做》?想与做?
d.转化
《网站转化率优化之道》
《数据掘金,电子商务运营突围》
《landing page优化权威指南》
《淘宝卖家秘笈》
《提高转化率! : 网页A/B测试与多变量测试实战指南》
《啤酒与尿布》
《顾客为什么购买》
三、寻他千网络:蓦然回首,佳丽原来在后宫
生活兴趣书籍,从生活中感悟。
社区运营:《裸猿》、《人类动物园》和《亲密行为》社区机制
用户行为:《会赚钱的行为经济学》《流行性物欲症》《后物欲时代的来临》
广告策划:《广告武林秘笈》《广告文案传真》《大量流出》
商业:《商战》《战争论》
值得精度的书:
《数据化管理》
《超级富豪就是超级创意》
《数据挖掘与数据化运营实战》
《精益创业实战》
《数据分析,企业的贤内助》
《微力无边》
《淘宝产品十年事》
《推荐系统实践》
《设计搜索体验》
《深入理解网站优化》
2014新书推荐:
《腾讯方法 : 一个市值1500亿美元公司的产品真经》
《颠覆式创新:移动互联网时代的生存法则》
《从门外汉到BAT产品经理有多远》
《缔造企鹅 : 产品经理是这样炼成的》
《九败一胜 : 美团创始人王兴创业十年》
《第二次机器革命 : 数字化技术将如何改变我们的经济与社会》
《参与感 : 小米口碑营销内部手册》
《周鸿祎自述 : 我的互联网方法论》
《再看电商》
《新经济,新规则》
《社交红利(修订升级版)》
《互联网创业原创精品-互联网创业密码》
《风吹江南之互联网金融》
《谷歌和亚马逊如何做产品》
《数据之巅:大数据革命》
《微管理》
《O2O进化论: 数据商业时代的全景图》
《互联网思维的企业》
《有的放矢:NISI创业指南》
《翻转课堂的可汗学院:互联时代的教育革命》
《硅谷百年史:伟大的科技创新与创业历程(1900-2013)》
《创业时, 我们在知乎聊什么?》
《孵化Twitter:从蛮荒到IPO的狂野旅程》
E. 怎么写好Java(或者Java web)代码
作为一个Java开发攻城狮(lao si ji),我可以负责任地告诉你,多看多写~
首先,鉴于题主你说你是刚接触地阶段,我并不推荐你你上来就要写工业级或者企业级的代码,当下的话应该是迅速积累项目经验,快速掌握java web的开发流程为主,可以网上看看什么视频教程,有些还是能学到规范的。
分享一下我的经历吧~
读大学的时候我接一些外包【朋友介绍】,一开始也很虚啊,觉得这里不对,那里不对的。写得多了,慢慢理解整个开发流程后,就觉得也就是增删改查嘛,没什么的。每次都要写,好麻烦啊,既然这样,不如自己造一些轮子,后来就是项目多了,又造了一些轮子,然后做了系列的封装。期间穿插读了 重构和effective java两本书,代码方法保持整洁,但一些代码上还是不规范。
再后来,学习了java的一些高级特性,反射、自省【提高了写代码250%的效率】以及参考了部分阿里的规范,感觉逐渐能写出比以前看上去优雅的代码了。
接下来的一段时间,因为兴趣的原因,研究了一下三大框架,自己强行撸了三个阉割版。回去看源码的时候,发现spring写得真的太优雅了,然后又小小改了一下风格。
最后,出来工作了,哦谢特~ 大家写得什么鬼啊~ 什么规范都不参照~ 简直内心爆炸,一万点伤害~ 好吧,我还是照着我原先的思路,搞一搞~
所以说,工业级、企业级代码不是每个公司都有,但是对自身有要求是好事啊~ 你也别急,慢慢写,也能逐渐规范起来~ 只是现在,不合适~ 加油~
还有问题的话,欢迎联系我~
F. 学习Web前端应先看什么书
如果你是真心想学习web前端、以后想朝着这个方向发展,那么你一定要来这个企鹅裙,前面前面是二9六,中间是5九一,最后面就是二九零,来这里可以这里学习经验,得到专人解答,这样你可以成长的更快!!!
我在学习javascript的时候,我基本把图书馆基本能借的javascript书都借了,主要是图灵和博文视点出版的书。例如《JavaScript核心技术》,《精通JavaScript
》,《JAVASCRIPT语言精髓与编程实践》,《JavaScript设计模式 》,《JavaScript语言精粹》,《JavaScript
DOM编程艺术》,《ppk谈JavaScript》,《高性能网站建设指南
》等,还有其他很多js的书,如果借不到,就直接在图书馆七楼看,例如权威指南;也有一些一般的书,这里没有提到,这些书,我并不是全部都会认真看过,因为初学阶段这样学习效率不高。权威指南我现在还没看完,但是如果要全面深入学习的话,看两本还是不够的。但我喜欢以集中在两本书以内学习作为切入点,这样能使我将精力集中在,并且发现问题。
我在上面提到的书,都是比较好的书,适合不同的阶段,例如《JavaScript语言精粹》这本书是属于很精华的读物,入门的时候看可能会比较吃力,当你对JS有一定的驾驭能力的时候,可能就会发现其中的奥妙。我当时花精力看的主要是《精通JavaScript
》,《JAVASCRIPT语言精髓与编程实践》,《JavaScript核心技术》也花了不少时间,感觉收获不是很大,可能当时理解不够深刻,权威指南也是后来才看。《JavaScript核心技术》给我的帮助没想象中大,但里面说的知识我是很认真在看,可能不适合入门吧,但很多事情冥冥之中的联系谁又能说得清楚呢,早期花时间在《JavaScript核心技术》上未必就是坏事。
《精通JavaScript
》是偏实践型一类的书,作者是JQuery之父,书中有很多非常好的例子,还有jS的相关技巧,兼容浏览器的方法等。有很多例子都是作者处理问题的总结,我当时几乎把里面的每个例子都测试了一遍,受益匪浅,当然,书中也有不少瑕疵,不知道是我借的那本书印刷问题还是怎么的,有些代码运行并不兼容,也有些函数方法并不能成功运行。到后半部分的示例也比较繁琐,我只是粗略看了一番。实际到后来我看网上的评论,这本书适合进阶的人看,现在回头看,感觉确实有jQuery源码分析的感觉,而且部分内容并不适合初学者阅读。但是书中的第三部分确实是很有用的。
上面说了很多关于个人在学习JS上的一些心得,无非也就是想说明一点,有时候并不能找到一本真正适合初学者的书,或者教程。有些书确实不错,未必就适合你,有时候我们也会走错路,但学习不应就此止步。
我接下来会写一些自己读过的书,并且觉得好的书推荐给大家,希望对大家有用:
HTML相关:
《Web标准实战》 比较简单,适合入门
《Web标准设计》
《深入浅出HTML》
CSS相关
《CSS设计彻底研究》 视频教程很好,书本我并没有详细研究,不好说建议。
《CSS网站布局实录》 CSS的书我看得比较少,这本算是看得比较全了,听说第二版不错。
javascript相关:
《精通JavaScript》 第三部分非常好
《JAVASCRIPT语言精髓与编程实践》 这本书对原型和继承做了非常精辟的解释,网上大部分关于原型的文章都是参考此书的。
《悟透javascript》 这本书第一章是介绍原型和继承的,第三章也介绍了跨域的一个解决方法,还有就是作者对程序和人生的理解哲学很有深度。
《JavaScript权威指南》 这本书就不用说了
《高性能网站建设指南 》 这类书有两本不同版本,都是关于web性能优化的
《JavaScript语言精粹》 进阶的好书
《JavaScript设计模式 》 进阶的好书
SEO;
《SEO教程:搜索引擎优化入门与进阶》 这本书有些地方我认为说得不大确切,但是总体还不错。
G. 第五章:Web服务器
5.1各种形状和尺寸的Web服务器
Web服务器会对HTTP请求进行处理并提供响应。术语“Web服务器”可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备或计算机。
Web服务器有着不同的风格、形状和尺寸。有普通的10行Perl脚本的Web服务器、50MB的安全商用引擎以及极小的卡上服务器。但不管功能有何差异,所有的 Web服务器都能够接收请求资源的 HTTP请求,将内容回送给客户端(参见图1-5)。
5.1.1Web服务器的实现
Web服务器实现了HTTP和相关的TCP连接处理。负责管理Web服务器提供的资源,以及对Web服务器的配置、控制及扩展方面的管理。
Web服务器逻辑实现了HTTP 协议、管理着Web资源,并负责提供Web服务器的管理功能。Web服务器逻辑和操作系统共同负责管理TCP连接。底层操作系统负责管理底层计算机系统的硬件细节,并提供了TCP/IP网络支持、负责装载Web资源的文件系统以及控制当前计算活动的进程管理功能。
5.3实际的Web服务器会做些什么
例5-1显示的 Perl服务器是一个Web服务器的小例子。最先进的商用Web服务器要比它复杂得多,但它们确实执行了几项同样的任务,如图5-3所示。
(1)建立连接一—接受一个客户端连接,或者如果不希望与这个客户端建立连接,就
将其关闭。
(2)接收请求——从网络中读取一条HTTP请求报文。(3)处理请求——对请求报文进行解释,并采取行动。(4)访问资源-———访问报文中指定的资源。
(5)构建响应——创建带有正确首部的 HTTP响应报文。(6)发送响应——将响应回送给客户端。
(7)记录事务处理过程—-将与已完成事务有关的内容记录在一个日志文件中。
5.4第一步——接受客户端连接
如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则,客户端需要打开一条新的到服务器的连接(回顾第4章,复习一下HTTP的连接管理技术)。
5.4.1处理新连接
客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来。'一旦新连接建立起来
并被接受,服务器就会将新连接添加到其现存Web服务器连接列表中,做好监视连接上数据传输的准备。
Web服务器可以随意拒绝或立即关闭任意一条连接。有些Web服务器会因为客户端IP地址或主机名是未认证的,或者因为它是已知的恶意客户端而关闭连接。Web服务器也可以使用其他识别技术。
5.4.2客户端主机名识别
可以用“反向 DNS”对大部分Web服务器进行配置,以便将客户端IP地址转换成客户端主机名。Web服务器可以将客户端主机名用于详细的访问控制和日志记录。但要注意的是,主机名查找可能会花费很长时间,这样会降低Web事务处理的速度。很多大容量Web服务器要么会禁止主机名解析,要么只允许对特定内容进行解析。
可以用配置指令HostnameLookups启用Apache的主机查找功能。比如,例5-2中的Apache配置指令就只打开了HTML和CGI资源的主机名解析功能。
例5-2配置Apache,为 HTML和CGI资源查找主机名
HostnameLookups off
<Files ~" - 《html |htmlcgi)$">
HostnameLookups on
</Files>
5.5第二步—接收请求报文
连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来(参见图5-5)。
解析请求报文时,Web服务器会:
·解析请求行,查找请求方法、指定的资源标识符(URI)以及版本号,3各项之
间由一个空格分隔,并以一个回车换行(CRLF)序列作为行的结束,“
·读取以CRLF结尾的报文首部;
检测到以CRLF结尾的、标识首部结束的空行(如果有的话)﹔
·如果有的话(长度由content-Length首部指定),读取请求主体。
解析请求报文时,Web服务器会不定期地从网络上接收输入数据。网络连接可能随时都会出现延迟。Web服务器需要从网络中读取数据,将部分报文数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。
5.5.1 报文的内部表示法
有些Web服务器还会用便于进行报文操作的内部数据结构来存储请求报文。比如,数据结构中可能包含有指向请求报文中各个片段的指针及其长度,这样就可以将这些首部存放在一个快速查询表中,以便快速访问特定首部的具体值了(参见图5-6)。
5.5.2连接的输入/输出处理结构
高性能的 Web服务器能够同时支持数千条连接。这些连接使得服务器可以与世界各地的客户端进行通信,每个客户端都向服务器打开了一条或多条连接。某些连接可能在快速地向Web服务器发送请求,而其他一些连接则可能在慢慢发送,或者不经常发送请求,还有一些可能是空闲的,安静地等待着将来可能出现的动作。
因为请求可能会在任意时刻到达,所以Web服务器会不停地观察有无新的Web请求。不同的Web服务器结构会以不同的方式为请求服务,如图5-7所示。
·单线程Web服务器(参见图5-7a)
单线程的Web服务器一次只处理一个请求,直到其完成为止。一个事务处理结束之后,才去处理下一条连接。这种结构易于实现,但在处理过程中,所有其他连接都会被忽略。这样会造成严重的性能问题,只适用于低负荷的服务器,以及type-o-serve这样的诊断工具。
·多进程及多线程Web服务器(参见图5-7b)
多进程和多线程Web服务器用多个进程,或更高效的线程同时对请求进行处理。3可以根据需要创建,或者预先创建一些线程/进程。°有些服务器会为每条连接分配一个线程/进程,但当服务器同时要处理成百、上千,甚至数以万计的连接时,需要的进程或线程数量可能会消耗太多的内存或系统资源。因此,很多多线程Web服务器都会对线程/进程的最大数量进行限制。
·复用I/O的服务器(参见图5-7c)
为了支持大量的连接,很多Web服务器都采用了复用结构。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时(比如,有数据可用,或出现错误时),就对那条连接进行少量的处理,处理结束之后,将连接返回到开放连接列表中,等待下一次状态变化。只有在有事情可做时才会对连接进行处理,在空闲连接上等待的时候并不会绑定线程和进程。
·复用的多线程Web服务器(参见图5-7d)
有些系统会将多线程和复用功能结合在一起,以利用计算机平台上的多个CPU.多个线程(通常是一个物理处理器)中的每一个都在观察打开的连接(或打开的连接中的一个子集),并对每条连接执行少量的任务。
5.6第三步———处理请求
一旦Web服务器收到了请求,就可以根据方法、资源、首部和可选的主体部分来对请求进行处理了。
有些方法(比如POST)要求请求报文中必须带有实体主体部分的数据。其他一些方法(比如OPTIONS)允许有请求的主体部分,也允许没有。少数方法(比如GET)禁止在请求报文中包含实体的主体数据。
这里我们并不对请求的具体处理方式进行讨论,因为本书其余大多数章节都在讨论这个问题。
5.7第四步——-对资源的映射及访问
Web 服务器是资源服务器。它们负责发送预先创建好的内容,比如HTML页面或JPEG 图片,以及运行在服务器上的资源生成程序所产生的动态内容。
5.7.1 docroot
Web服务器支持各种不同类型的资源映射,但最简单的资源映射形式就是用请求URI作为名字来访问Web服务器文件系统中的文件。通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容。这个文件夹被称为文档的根目录(document root,或docroot)。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。
在图5-8中,有一条对/specials/saw-blade.gif 的请求到达。这个例子中Web服务器的文档根目录为/us/local/httpd/files。Web服务器会返回文件/usr/local/httpd/files/specials/saw-blade.gif。
在配置文件httpd.conf中添加一个 DocumentRoot行就可以为Apache Web服务器设置文档的根目录了:
DocumentRoot /usr/ local/httpd/files
服务器要注意,不能让相对URL退到docroot之外,将文件系统的其余部分暴露出来。比如,大多数成熟的Web服务器都不允许这样的URI看到Joe的五金商店文档根目录上一级的文件:
http://www.joes-hardware.com/ ..
5.8.3重定向
Web服务器有时会返回重定向响应而不是成功的报文。Web服务器可以将浏览器重定向到其他地方来执行请求。重定向响应由返回码3XX说明。Location响应首部包含了内容的新地址或优选地址的URI。重定向可用于下列情况。
·永久删除的资源
资源可能已经被移动到了新的位置,或者被重新命名,有了一个新的URL。Web服务器可以告诉客户端资源已经被重命名了,这样客户端就可以在从新地址获取资源之前,更新书签之类的信息了。状态码301 Moved Permanently就用于此类重定向。·临时删除的资源
如果资源被临时移走或重命名了,服务器可能希望将客户端重定向到新的位置上去。但由于重命名是临时的,所以服务器希望客户端将来还可以回头去使用老的URL,不要对书签进行更新。状态码303 See Other以及状态码307 TemporaryRedirect就用于此类重定向。