说img标签是web标准最大的失误的原因:1、携带Cookie;2、与CSS使用冲突;3、不利于响应式设计;4、不利于无障碍网页的建设;5、对性能有影响。携带 Cookie是指img无视cors,并且会携带Cookie,这就给了恶意网站盗取信息的机会。
一、说img标签是web标准最大的失误的原因
1、携带 Cookie
img会无视cors,并且会携带Cookie。这就给了恶意网站盗取信息的机会。
2、与CSS使用冲突
使用img标签时,常常需要将样式管理的工作委托给CSS,但是,img标签的默认行为与CSS中的自然流体不相匹配,这样会导致浏览器的解释差异,使得开发者很难去控制呈现方式。
3、不利于响应式设计
在过去,img标签是自适应网站流行的一种方式,但是,随着多种设备和屏幕尺寸的出现,图片的大小和比例不同,由此在响应式设计方面的特性设定和设计面临困难。
4、不利于无障碍网页的建设
img标签是从实现静态图片到网页中的一种方式,但是缺少适当的ALT属性和其他元素,可能导致屏幕阅读器无法理解网页上的内容,使在视觉上受限或盲人网民无法有效地获取正确的信息。
5、对性能有影响
img标签存在图片的大小、分辨率和数量的问题,有时候这些图片可能很大,从而导致加载时间很长,并占用带宽,降低了性能。
二、web介绍
1、概念
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
2、起源
1989年CERN(欧洲粒子物理研究所)中由Tim Berners-Lee领导的小组提交了一个针对Internet的新协议和一个使用该协议的文档系统,该小组将这个新系统命名为World Wide Web,它的目的在于使全球的科学家能够利用Internet交流自己的工作文档。
这个新系统被设计为允许Internet上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档。1990年末,这个新系统的基本框架已经在CERN中的一台计算机中开发出来并实现了,1991年该系统移植到了其他计算机平台,并正式发布。
3、表现形式
web有以下三种表现形式:
- 超文本(Hyper text):超文本是一种用户接口方式,用以显示文本及与文本相关的内容。现时超文本普遍以电子文档的方式存在,其中的文字包含有可以链接到其他字段或者文档的超文本链接,允许从当前阅读位置直接切换到超文本链接所指向的文字。超文本的格式有很多,最常使用的是超文本标记语言(Hyper Text Markup Language,HTML)及富文本格式 (Rich Text Format,RTF)。我们日常浏览的网页上的链接都属于超文本。超文本链接一种全局性的信息结构,它将文档中的不同部分通过关键字建立链接,使信息得以用交互方式搜索。
- 超媒体(hypermedia):超媒体是超级媒体的简称。是超文本(hypertext)和多媒体在信息浏览环境下的结合。用户不仅能从一个文本跳到另一个文本,而且可以激活一段声音,显示一个图形,甚至可以播放一段动画。Internet采用超文本和超媒体的信息组织方式,将信息的链接扩展到整个Internet上。Web就是一种超文本信息系统,Web的一个主要的概念就是超文本链接。它使得文本不再像一本书一样是固定的线性的,而是可以从一个位置跳到另外的位置并从中获取更多的信息,还可以转到别的主题上。想要了解某一个主题的内容只要在这个主题上点一下,就可以跳转到包含这一主题的文档上。正是这种多连接性把它称为Web。
- 超文本传输协议(HTTP,HyperText Transfer Protocol):是互联网上应用较为广泛的一种网络协议。
4、特点
web有以下特点:
- 图形化:Web 非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。
- 与平台无关:无论用户的系统平台是什么,你都可以通过Internet访问WWW。浏览WWW对系统平台没有什么限制。无论从Windows平台、UNIX平台、Macintosh等平台我们都可以访问WWW。对WWW的访问通过一种叫做浏览器(browser)的软件实现。如Mozilla的Firefox、Google的Chrome、Microsoft的Internet Explorer等。
- 分布式的:大量的图形、音频和视频信息会占用相当大的磁盘空间,我们甚至无法预知信息的多少。对于Web没有必要把所有信息都放在一起,信息可以放在不同的站点上,只需要在浏览器中指明这个站点就可以了。在物理上并不一定在一个站点的信息在逻辑上一体化,从用户来看这些信息是一体的。
- 动态的:由于各Web站点的信息包含站点本身的信息,信息的提供者可以经常对站上的信息进行更新。如某个协议的发展状况,公司的广告等等。一般各信息站点都尽量保证信息的时间性。所以Web站点上的信息是动态的、经常更新的,这一点是由信息的提供者保证的。
- 交互的:Web的交互性首先表现在它的超链接上,用户的浏览顺序和所到站点完全由他自己决定。另外通过FORM的形式可以从服务器方获得动态的信息。用户通过填写FORM可以向服务器提交请求,服务器可以根据用户的请求返回相应信息。
三、web体系结构
1、体系结构简述
传统的Web数据库系统一般实现Web数据库系统的连接和应用可采取两种方法,一种是在Web服务器端提供中间件来连接Web服务器和数据库服务器,另一种是把应用程序下载到客户端并在客户端直接访问数据库。中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务,它能够直接调用外部程序或脚本代码来访问数据库,因此可以提供与数据库相关的动态HTML页面,或执行用户查询,并将查询结果格式化成HTML页面。通过Web服务器返回给Web浏览器。最基本的中间件技术有通过网关接口CGI和应用程序接口API两种。
2、公共网关接口
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是WWW服务器运行时外部程序的规范,按照CGI编写的程序可以扩展服务器的功能,完成服务器本身不能完成的工作,外部程序执行时间可以生成HTML文档,并将文档返回WWW服务器。CGI应用程序能够与浏览器进行交互作用,还可以通过数据库的API与数据库服务器等外部数据源进行通信,如一个CGI程序可以从数据库服务器中获取数据,然后格式化为HTML文档后发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎使用的服务器软件都支持CGI,开发人员可以使用任何一种WWW服务器内置语言编写CGI,其中包括流行的C、C++ 、VB和Delphi等。
从体系结构上来看,用户通过Web浏览器输入查询信息,浏览器通过HTTP协议向Web服务器发出带有查询信息的请求,Web服务器按照CGI协议激活外部CGI程序,由该程序向DBMS发出SQL请求并将结果转化为HTML后返回给Web服务器。再由Web服务器返回给Web浏览器。这种结构体现了客户/服务器方式的三层模型,其中Web服务器和CGI程序实际起到了HTML和SQL转换的网关的作用。CGI的典型操作过程是:分析CGI数据;打开与DBMS的连接;发送SQL请求并得到结果;将结果转化为HTML;关闭DBMS的连接;将HTML结果返回给Web服务器。
基于Web的数据库访问利用已有的信息资源和服务器。其访问频率大,尤其是热点数据。但其主要的缺点是:
- 客户端与后端数据库服务器通信必须通过Web服务器,且Web服务器要进行数据与HTML文档的互相转换,当多个用户同时发出请求时,必然在Web服务器形成信息和发布瓶颈
- CGI应用程序每次运行都需打开和关闭数据库连接,效率低,操作费时
- CGI应用程序不能由多个客户机请求共享,即使新请求到来时CGI程序正在运行,也会启动另一个CGI应用程序,随着并行请求的数量增加,服务器上将生成越来越多的进程。为每个请求都生成进程既费时又需要大量内存,影响了资源的使用效率,导致性能降低并增加等待时间
- 由于SQL与HTML差异很大,CGI程序中的转换代码编写繁琐,维护困难
- 安全性差,缺少用户访问控制,对数据库难以设置安全访问权限
- HTTP协议是无状态且没有常连接的协议,DBMS事务的提交与否无法得到验证,不能构造Web上的OLTP应用
3、扩展接口
为了克服CGI的局限性,出现的另一种中间件解决方案是基于服务器扩展API的结构。与CGI相比,API应用程序与Web服务器结合得更加紧密,占用的系统资源也少得多,而运行效率却大大提高,同时还提供更好的保护和安全性。
服务器API一般作为一个DLL提供,是驻留在WWW服务器中的程序代码,其扩展WWW服务器的功能与CGI相同。WWW开发人员不仅可以API解决CGI可以解决的一切问题,而且能够进一步解决基于不同WWW应用程序的特殊请求。各种API与其相应的WWW服务器紧密结合,其初始开发目标服务器的运行性能进一步发掘、提高。用API开发的程序比用CGI开发的程序在性能上提高了很多,但开发API程序比开发CGI程序要复杂得多。API应用程序需要一些编程方面的专门知识,如多线程、进程同步、直接协议编程以及错误处理等。主要的WWW API有Microsoft公司的ISAPI、Netscape公司的NSAPI和OReily公司的WSAPI等。使用ISAPI开发的程序性能要优于用CGI开发的程序,这主要是因为ISAPI应用程序是一些与WWW服务器软件处于同一地址空间的DLL,因此所有的HTTP服务器进程能够直接利用各种资源这显然比调用不在同一地址空间的CGI程序语句要占用更少的系统时间。而NSAPI同ISAPI一样,给WWW开发人员定制了Netscape WWW服务器基本服务的功能。开发人员利用NSAPI可以开发与WWW服务器的接口,以及与数据库服务器等外部资源的接口。
虽然基于服务器扩展API的结构可以方便、灵活地实现各种功能,连接所有支持32位ODBC的数据库系统,但这种结构的缺陷也是明显的:
- 各种API之间兼容性很差,缺乏统一的标准来管理这些接口
- 开发API应用程序也要比开发CGI应用复杂得多
- 这些API只能工作在专用Web服务器和操作系统上
4、JDBC
Java的推出,使WWW页面有了活力和动感。Internet用户可以从WWW服务器上下载Java小程序到本地浏览器运行。这些下载的小程序就像本地程序一样,可独立地访问本地和其他服务器资源。而最初的Java语言并没有数据库访问的功能,随着应用的深入,要求Java提供数据库访问功能的呼声越来越高。为了防止出现对Java在数据库访问方面各不相同的扩展,JavaSoft公司指定了JDBC,作为Java语言的数据库访问API。
采用JDBC技术,在Java Applet中访问数据库的优点在于:直接访问数据库,不再需要Web数据库的介入,从而避开了CGI方法的一些局限性;用户访问控制可以由数据库服务器本地的安全机制来解决,提高了安全性;JDBC是支持基本SQL功能的一个通用低层的应用程序接口,在不同的数据库功能的层次上提供了一个统一的用户界面,为跨平台跨数据库系统进行直接的Web访问提供了方案。从而克服了API方法一些缺陷;同时,可以方便地实现与用户地交互,提供丰富的图形功能和声音、视频等多媒体信息功能。
JDBC是用于执行SQL语句的Java应用程序接口API,由Java语言编写的类和接口组成。Java是一种面向对象、多线程与平台无关的编程语言,具有极强的可移植性、安全性和强健性。JDBC是一种规范,能为开发者提供标准的数据库访问类和接口,能够方便地向任何关系数据库发送SQL语句,同时JDBC是一个支持基本SQL功能的低层应用程序接口,但实际上也支持高层的数据库访问工具及API。所有这些工作都建立在X/Open SQL CLI基础上。JDBC的主要任务是定义一个自然的Java接口来与X/Open CLI中定义的抽象层和概念连接。JDBC的两种主要接口分别面向应用程序的开发人员的JDBC API和面向驱动程序低层的JDBC Driver API。JDBC完成的工作是:建立与数据库的连接;发送SQL语句;返回数据结果给Web浏览器。
基于JDBC的Web数据库结构其缺陷在于:
- 只能进行简单的数据库查询等操作,还不能进行OLTP
- 安全性、缓冲机制和连接管理仍不完善
- SUN承诺的完全跨平台跨数据库系统的功能和标准远未实现。
延伸阅读1:Web 3.0的技术特性
- 智能化及个性化搜索引擎。
- 数据的自由整合与有效聚合。
- 适合多种终端平台,实现信息服务的普适性。