优化网站设计(七):避免在CSS中使用表达式

news/2024/5/10 16:40:23/文章来源:https://blog.csdn.net/weixin_34007291/article/details/85555726

前言

网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。

作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考

Best Practices for Speeding Up Your Web Site  http://developer.yahoo.com/performance/rules.html

同时,他们还发布了一个相应的测试工具Yslow http://developer.yahoo.com/yslow/

我强烈推荐所有的网站开发人员都应该学习这些最佳实践,并结合自己的实际项目情况进行应用。

接下来的一段时间,我将结合ASP.NET这个开发平台,针对这些原则,通过一个系列文章的形式,做些讲解和演绎,以帮助大家更好地理解这些原则,并且更好地使用他们。

准备工作

为了跟随我进行后续的学习,你需要准备如下的开发环境和工具

  1. Google Chrome 或者firefox ,并且安装 Yslow这个扩展组件.请注意,这个组件是雅虎提供的,但目前没有针对IE的版本。
    1. https://chrome.google.com/webstore/detail/yslow/ninejjcohidippngpapiilnmkgllmakh

      Technorati Tags: Performance,Web design,ASP.NET

    2. https://addons.mozilla.org/en-US/firefox/addon/yslow/
    3. 你应该对这些浏览器的开发人员工具有所了解,你可以通过按下F12键调出这个工具。
  2. Visaul Studio 2010 SP1 或更高版本,推荐使用Visual Studio 2012
    1. http://www.microsoft.com/visualstudio/eng/downloads
  3. 你需要对ASP.NET的开发基本流程和核心技术有相当的了解,本系列文章很难对基础知识做普及。

本文要讨论的话题

这一篇我来和大家讨论个原则:Avoid CSS Expressions  (避免在CSS中使用表达式)

最早的CSS是不支持所谓的表达式的,微软的IE从5.0开始引入了这种概念,意思是希望我们拥有定义动态的CSS样式的能力,详细的文章请参考http://msdn.microsoft.com/en-us/library/ms537634(v=VS.85).aspx,下面有一个简单的例子:

background-color: expression((new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );

这里可以使用一个特殊的expression函数,其实这是一个javascript的函数。它可以进行根据一个表达式进行计算,动态地决定background-color的值。

看起来是一个相当不错的功能,但我们可能不会想到这个表达式会运算很多次(这个具体的次数可能远远超过你的想象)

我随便定义了一个界面,并添加了如下的样式定义

    <style>body {background-color: expression((new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );}</style>

打开之后,只是鼠标动来动去,或者滚动条上下拖动几下,就会执行1865次。如下图所示

image

很显然,这是很可观的一些成本。这还是比较简单的表达式,试想一下,如果有更加复杂的表达式呢?这些函数需要一次一次的执行,毫无疑问地会拖累页面执行的效率,乃至浏览器的性能。

正因为如此,不光是其他浏览器都不支持,同时w3c标准组织也不支持这种方式。鉴于此,微软方面也于2008年(彼时发布了IE 8)的时候,正式终止了对这种功能的支持。下面这篇文章是当时所发出的声明:

http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx

文中提到的三点不再支持CSS表达式的原因,显然是很中肯的(更加符合标准,更加有利于性能提升,以及减少受攻击面

Why end support for expressions ?

  • To comply with standards
    • Expressions are proprietary to Internet Explorer and as such not interoperable.
    • A common use-case for expressions was to fix IE bugs or to emulate those CSS 2.1 features not yet supported by the browser, for example, min-width and max-width. We have not only worked hard to fix these bugs in IE8 but our new layout engine supports the missing features natively.
  • To improve performance
    • Expressions evaluation has a high runtime cost; web performance experts like Steve Souders recommend avoiding them to improve front-end performance
  • To reduce the browser attack surface
    • Because they expose a script execution context, CSS expressions constitute a possible script injection attack vector.

 

那么,情况已经很清楚了,如果你根本不了解CSS表达式,那么恭喜你,你不需要再了解它了。如果你以前用过CSS表达式,而且对它还比较喜欢,那么我也希望你能慎重地考虑一下这条建议,并且毅然地选择放弃这种功能,拥抱标准吧。

好吧,你可能已经同意了我的提议,但是仍然有一个疑问,那么如果我们真的希望实现动态的CSS,怎么办呢?例如上面这个例子,我们希望根据当前的时间,来决定显示什么背景颜色。(小时为单数时显示一种颜色,为复数时显示另外一种颜色)。

你在想这个问题是吗?那我们为什么不像下面这么做呢?

    <script src="Scripts/jquery-2.0.0.min.js"></script><script>$(function () {$("body").css("background-color", (new Date()).getHours() % 2 ? "#B8D4FF" : "#F08A00");});</script>

我们不光发现调用次数少了,而且这种代码在所有主流浏览器都能实现一致的用户体验,何乐而不为呢?

image

【备注】因为使用了jquery,所以会有一些其他的方法调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_702050.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让你的网站拥有微博(weibo.com)关注图标

最近在做开发的过程中&#xff0c;有一个需求是在网站里面添加新浪微博(http://weibo.com)的关注图标。 先来看看我的运行效果,一下是四种不同的格式&#xff0c;实现都很简单&#xff1a; 操作步骤如下&#xff1a; 第一步&#xff1a;你需要申请一个微博(weibo.com)的账号 如…

php网站开发案例教程ppt,php网站开发案例教程》课件.ppt

php网站开发案例教程》课件.ppt还剩178页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;PHP网…

大型网站系统架构分析--转

大型网站系统架构分析 原文地址&#xff1a;http://www.cnblogs.com/Mainz/archive/2009/04/28/1445424.html 千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xf…

Nginx反向代理实现HTTPS网站

1、环境设置 这次是在windows环境下实现的&#xff0c;linux环境下步骤差不多 openssl的windows版本 下载地址&#xff1a; http://slproweb.com/products/Win32OpenSSL.html Nginx的windows版本 下载地址&#xff1a; http://nginx.org/en/download.html 网站使用python的to…

为什么说企业做网站不要选择或找低价便宜的网站建设制作公司?

本人曾经做过这样多次调研&#xff0c;发现存在一个普遍性的问题&#xff0c;那就是当企业在决定做一网站之前&#xff0c;一般都会对市场上的建站服务商进行一次统一的咨询与调查&#xff0c;了解建站服务商的价格和实力问题&#xff0c;其中&#xff0c;感触最深的当然还是价…

10款在线网站原型设计工具 总有一款适合你

2019独角兽企业重金招聘Python工程师标准>>> 现在&#xff0c;基于云端的软件渐渐成为主流&#xff0c;而网站原型设计工具当然也不例外。在线原型工具相比于桌面版有得天独厚的优势&#xff0c;它不需要安装、不限制地点、不限制操作系统&#xff0c;无论你使用的L…

大型网站架构演化发展历程

1初始阶段的网站架构2应用服务和数据服务分离3使用缓存改善网站性能4使用应用服务器集群改善网站的并发处理能力5数据库读写分离6使用反向代理和CDN加速网站响应7使用分布式文件系统和分布式数据库系统8使用NoSQL和搜索引擎9业务拆分10分布式服务转载于:https://www.cnblogs.co…

杨泽业:让你的网站无限可能之给你的网站增加汉字转拼音的新功能

一个网站可以无限可能&#xff0c;你的网站可以成就你的事业&#xff01;这不是一句空话&#xff0c;而是一个可行的方案。今天杨泽业来给大家讲解一下最简单的网站功能的增加。现在增加的是【汉字转拼音】的新功能为例&#xff0c;让你了解一下&#xff0c;你的网站是可以增加…

ubuntu 压缩率最高的软件_不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理...

一直以来&#xff0c;大家都在用各种各样的采集器或网站自带的采集功能&#xff0c;如织梦采集侠、火车头采集器、八爪鱼采集器等&#xff0c;这些采集软件都有一个共同的特点&#xff0c;就是要编写采集规则才能采集到文章&#xff0c;这个技术性的问题&#xff0c;对于新手来…

如何设计网站权限系统(转载)

作者&#xff1a;Vance链接&#xff1a;https://www.zhihu.com/question/20313385/answer/118095995来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 后台产品狗&#xff0c;之前踩过权限控制系统的大坑。 做完项目整体复…

不错的学习网站

2019独角兽企业重金招聘Python工程师标准>>> 百度&#xff1a; http://naotu.baidu.com/ http://fis.baidu.com/ http://fex.baidu.com/ https://github.com/fex-team/fex-edu http://fex.baidu.com/blog/2014/05/build-performance-monitor-in-7-days/ http://www.…

搜索引擎提交工具_钦州SEO优化_SEO工具常用的有哪些大盘点,做SEO优化不再累...

发布时间:2020-11-06 08:11:48现在的搜索引擎中&#xff0c;已经有大量的或免费&#xff0c;或付费的seo工具&#xff0c;总的来讲&#xff0c;可以分为几个大类&#xff0c;包括但不限于网站管理员工具&#xff0c;外链查询工具&#xff0c;seo综合查询工具&#xff0c;关键词…

如何使用Apache的ab工具进行网站性能测试

Apache服务器自带了ab压力测试工具&#xff0c;可以用来测试网站性能&#xff0c;使用简单方便。 工具/原料 Apache 方法/步骤 打开Apache服务器的安装路径&#xff0c;在bin目录中有一个ab.exe的可执行程序&#xff0c;就是我们要介绍的压力测试工具。 在Windows系统的命令行下…

网站服务器宕机,B站服务器宕机 股价短线走低冲上热搜 官方回复称因机房故障...

中华网财经7月14日讯&#xff0c;昨日晚间&#xff0c;哔哩哔哩弹幕网(简称“B站”)B站网页出现访问故障&#xff0c;客户端、网页版打开均无法加载内容。#B站崩了#话题登上微博热搜。多位网友表示&#xff0c;自己的B站已加载不出内容。凌晨2点20分&#xff0c;B站在微博发布声…

SharePoint 2013 新建网站集图解

SharePoint 2013 新建网站集图解 原文:SharePoint 2013 新建网站集图解前言&#xff1a;接触SharePoint的人可能是越来越多&#xff0c;但是很多人一接触就很迷茫&#xff0c;在技术群里问如何新建网站集&#xff0c;这样一篇图解&#xff0c;帮助新手学习在搭建好SharePoint环…

WordPress设计bug+WooCommerce漏洞导致网站存在被劫持风险

WordPress权限系统插件的设计缺陷和WooCommerce&#xff08;流行电子商务插件&#xff09;中的文件删除漏洞可允许***者获得对WordPress网站的完全控制权。Automattic公司推出的WooCommerce是一个很受欢迎的WordPress插件&#xff0c;它可以添加电子商务功能&#xff0c;这样网…

配置Exchange OWA和Sharepoint网站单点登录

配置Exchange OWA和Sharepoint网站单点登录如果我们在组织中已经部署完成了Lync、Exchange以及Sharepoint&#xff0c;那么我们会发现这三套系统在通过域账户登录计算机时&#xff0c;如果本机有安装Outlook和Lync&#xff0c;那么在登录Lync或启动Outlook的时候就会自动使用当…

网站预加载进度条的实现

我们经常会看到&#xff0c;一些站点在首次进入的时候会先显示一个进度条&#xff0c;等资源加载完毕后再呈现页面&#xff0c;大概像这样&#xff1a;然后整个页面的操作就会非常流畅&#xff0c;因为之后没必要再等待加载资源了。尤其是在移动端&#xff0c;或者是页游中&…

ai字体素材网站_4个网站,涵盖几乎所有素材,字体、设计、图片各种资源管够...

最近发现了几个优质的网址导航&#xff0c;收录了各类素材网站&#xff0c;提供各类字体素材、高清图片、在线设计网站&#xff0c;还有很多办公小工具。01字体酷站https://www.fonturl.com/ 全球最大的字体网址导航网站网站收录了大量优质字体素材&#xff0c;左侧为各种字体相…

关于移动端架构的好的学习网站

1、这个主要讲IM SDK架构的设计&#xff1a; http://tech.youzan.com/you-zan-im-sdk-ke-hu-duan-she-ji/ 2、这个http://casatwy.com 关于IOS应用架构的内容比较多哦&#xff0c;而且很不错哦。 转载于:https://www.cnblogs.com/goodboy-heyang/p/4675814.html