精华内容
下载资源
问答
  • 静态还是动态

    千次阅读 2004-08-23 01:20:00
    有时候浏览国外网站时,会看到网页使用的是不常见的扩展名,从扩展名上看不出他们使用的是何种技术,或者是静态网页还是动态网页。而有些表面是.htm或.html,实际上却是动态程序文件。这里就涉及到静态-动态的映射...

    有时候浏览国外网站时,会看到网页使用的是不常见的扩展名,从扩展名上看不出他们使用的是何种技术,或者是静态网页还是动态网页。而有些表面是.htm或.html,实际上却是动态程序文件。这里就涉及到静态-动态的映射问题。常见的有:

    1,直接设置,扩展名为.htm或.html也可以在后台设置成程序文件执行

    2,Web Server实现,有些web server具有静态--〉动态页面的映射功能。如Apache服务器上有一个非默认模块mod_Rewrite。可以使用了正则表达式方式,把动态页面转换为静态页面。比如show.asp?para=111映射成show/111.html这样的静态页面。当遇到show/111.html的请求时,Apache自动导向show.asp?para=111来处理。

    3,后台程序实现,利用后台程序把客户端的请求地址映射成对应的程序执行。

    展开全文
  • AOPSpring中的重要概念。如果这个不理解Web开发中的三大框架的原理,那就呵呵了。时常听到同学和网友议论Web程序员大...1.静态代理不要被这个设计模式高大上的名字给吓到了,其实静态代理还是挺容易理解的,用生活

    AOP是Spring中的重要概念。如果这个不理解Web开发中的三大框架的原理,那就呵呵了。时常听到同学和网友议论Web程序员大部分时间都是在考皮XML配置,我当时听到也是醉了,所以我要用心学习Web,其实这里面蕴含的设计模式、算法、架构思想在源码中体现的淋漓尽致啊,一个大宝库竟然视而不见可惜了。下面就一起品味…

    1.静态代理

    不要被这个设计模式高大上的名字给吓到了,其实静态代理还是挺容易理解的,用生活场景来理解静态代理就是:托人办事。假如一个公司想办一场演唱会,要找明星去哪找呢?明星的经纪人啊,明星哪有时间来和公司谈啊。所以这个经纪人就是静态代理中的重要角色。来看一张UML图,看看这其中的道理:

    其中Target可以理解为明星,TargetInterface可以理解为明星出场延长的标准,TargetProxy可以理解为经纪人。经纪人按照明星出场的标准和公司谈价格和其他事项等等。

    将以上的思想用到Web中假如有这样一个场景:删除或者修改用户信息,在这个过程中需要开启事务。用静态代理模拟这个场景。

    这次的代理对象就变成了UserDAOImpl了,而UserDAOProxy就成了上面的经纪人了(代理)。
    具体代码:GitHub
    其实说到这里静态代理还是有很大的缺点的就是如果明星多了,我的经纪人成倍的增长,这个时候代码量太大了。为了克服这个问题才有动态代理的产生。

    2.动态代理

    静态代理可以说是动态代理的通俗版,动态代理要解决明星多了,经纪人(代理)增多的现象,同时优化代码的效率。思想是差不多的,关键在用代码实现的时候差距还是挺大的。动态代理在Java中一般有JDK代理(JDK本身提供的功能)、Cglib代理、AspectJ等。
    具体代码实现看这里 。下面将和静态代理的区别拉出来:

    public class ProxyInterceptor implements InvocationHandler {
    //代理目标
    private Object target ;

    //引入事务
    private Transaction tx ;
    
    public ProxyInterceptor(Object target,Transaction tx) {
        this.target = target ;
        this.tx =  tx ;
    }
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        //开启事务
        this.tx.beginTransaction(); 
    
        method.invoke(target, args);
    
        //提交事务
        this.tx.commitTransaction();
        return null;
    }
    

    }
    其中private Object target ;声明为Object类型表示可以接受任何类型的代理对象(各种各样的明星)这样就解决了,动态代理中的固定代理对象的问题。同时代理(经纪人)都要实现一个接口InvocationHandler 这个接口是干嘛的呢?按照意思理解就是事件的处理者,然后重写接口中的invoke方法,且不管方法中的参数是什么,在这里理解为代理处理事务的重要方法。业务都在这个方法中进行调用。就可以实现了。这样动态代理就解决了应对代理对象多样性的问题。那么什么是AOP 呢?

    3.面向切面编程的AOP

    什么是AOP呢?有了上面代理的基础用一个例子就可以讲解什么是面向切面编程AOP了。案例背景:现在要取钱,取钱的过程之前ATM机器要开启日志功能、事务功能、安全性检查等等。代码在这里。下面看最重要的代理对象:

    package org.kylin.aop;

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    /**
    * @author UniKyln
    * @date 下午11:30:19 2015年3月31日
    * @blog:http://blog.csdn.net/unikylin
    * @github:https://github.com/unikylin/
    * @description 动态代理类
    */
    public class DrawManagerProxy implements InvocationHandler {

    //代理目标类
    private Object target ; 
    
    //面向切面编程中的各种切面
    private Logger logger ;
    private Security security ;
    private Transaction tx ;
    
    public DrawManagerProxy(Object target,Logger logger,Security security,Transaction tx) {
        this.target = target ;
        this.logger = logger ;
        this.security = security ;
        this.tx = tx ;
    }
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        //启动日志
        this.logger.logger();
    
        //启动事务
        this.tx.beginTransaction();
    
        //启动安全性检查
        this.security.checkSecurity();
    
        //取钱
        method.invoke(target, args);
    
        //提交事务
        this.tx.commitTransaction();
    
        return null;
    }   
    

    }
    在取钱之前启动了日志、开启事务,然后提交事务。可以用下面一个图来理解这个过程是如何发生的?

    上一篇文章已经提到这个图了。可以理解执行方法之前的日志记录、事务、安全性框架都是AOP中的切面,而AOP中的通知可以理解为是事务中的开启事务、提交事务这两个方法(切面中的方法可以理解为通知)。所以可以发现事务、日志、安全性框架和取钱完全是没有耦合的,完全是靠代理类来实现业务的。在实际的开发中每个人开发每个人的功能,类似于安全性框架的开发可以独立开发,及时以后去取钱之后需要打印小票,也可以增加一个切面实现这个功能。然后用AOP切面的思想将这些整合在一起形成一个完整的程序。

    展开全文
  • CDN做为内容分发技术,其核心原理就是将内容缓存到离用户最近的节点上,实现内容分发加速,这里内容主要分为两种,一种是静态内容,一种是动态内容。静态内容:主要是指那些普通的文本文件或html或像html的没有任何...

    看完这篇文章,在我看来动态cdn加速还是有点不靠谱的。

    还得搭建多地方的服务器。

    format,png

    CDN做为内容分发技术,其核心原理就是将内容缓存到离用户最近的节点上,实现内容分发加速,这里内容主要分为两种,一种是静态内容,一种是动态内容。静态内容:主要是指那些普通的文本文件或html或像html的没有任何后台动作的jsp、asp、php、css、html、jpg、js页面文件。

    静态内容一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。

    动态内容并不是指网页上简单的 GIF 动态图片或是 Flash 动画,动态网站的概念现在还没有统一标准,但都具备以下几个基本特征:

    1. 交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁。

    2. 自动更新:即无须手动更新 HTML 文档,便会自动生成新页面。

    3. 因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。

    从技术角度上来讲:

    静态资源就是当用户多次访问这个资源,资源的源代码永远不会改变的资源。

    动态资源是当用户多次访问这个资源,资源的源代码可能会发送改变。

    本篇主要要讲的是CDN对于动静态结合的网站是如何进行加速的。

    首先,对于静态资源,CDN的加速效果是最好的,因为文件本身没有变化,CDN会将文件缓存至节点,供终端用户访问使用,如果源站有新的静态资源产生,CDN也会及时去缓存这些资源,让用户无论是首次访问,还是多次访问,都可以快速获得内容。

    但现在的大部分网站都是既有静态,也有动态,所以,要想实现对该类网站的加速,必须能够在实现静态加速的同时,还可以做动态加速。

    对于动态资源,就网站而言,在没有加CDN的情况下,用户请求动态资源时,是需要通过客户端去到源站抓取,如果源站距离很远,就会导致用户请求时间变长。

    加了CDN后,就和静态资源类似,用户可以从更近的节点上去获取资源,这样就缩短了访问时间,专业点讲,就是链路优化。

    实现动态加速还有另外一个点,就是在缓存上的设置,对于静态资源,CDN一般会设置一个时间,这个时间是要告诉节点,多长时间去源站抓取一次内容。

    这种设置主要考虑源站静态资源发生变化后,如果节点没有及时缓存该内容,会造成用户访问不到新内容,使CDN的命中率下降。

    这里还要解释一下,为什么要设置一定的时间。两个原因,一个是静态资源更新没有那么频繁,另一方面,不设置一定时间,会频繁的去源站缓存内容,给源站造成压力。

    由于动态资源的特殊性(时时变化),要想通过CDN实现动态加速,那就需要不停的去缓存源站的内容,所以这里的时间会设置为0。有人会问,那源站压力会不会很大,在我看来,这个是很难以避免的问题。

    目前来看,个大厂商提供的动态加速,即便将时间设置为0,也很难实现理想的动态加速,这也是市场对于动态加速诟病良多的主要原因。

    从技术层面上来看,动态资源的产生很大程度上来源于业务逻辑本身。如果业务逻辑很复杂,那么动态资源产生的数量就会变多,这时候会造成动态资源大量产生而分发跟不上的情况。现象就是,我登陆一个网站,光登陆就要花掉好几分钟时间。

    对于这样的问题,云计算领域就提出了边缘计算的概念.边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。

    对于动态内容的加速,边缘计算最大特点是将业务逻辑下放到节点,把原来需要源站处理的动态工作让靠近用户的节点来做,这样用户既可以快速获取动态内容,同时还减轻了源站压力,这就能很好的解决0缓存带来的源站压力,同时还通过节点实现了链路优化。

    边缘计算目前个大云厂商都有推出,首先从原理上是可以很好的解决动态资源加速的问题,但实践上目前还没有被广泛采用,主要原因可能是技术和成本上的问题。

    总的来讲,CDN是可以实现网站的动静态加速,主要方法是链路优化和缓存策略。但目前来看,CDN在静态资源的表现要远优于对动态资源的加速,其主要原因还在于业务逻辑的源站化,如果边缘计算的技术得到普及,那应该可以大大改善CDN对于动态资源的加速效果。

    展开全文
  • 其中产品模块可以对任意一个产品自定义属性,每个产品可以有不同的属性,新闻详细页面实现了上一条和下一条新闻的链接,系统首页、单页模块、新闻模块、产品模块全部实现了动态生成静态,新闻列表、产品列表使用伪...
  • 动态网页和静态网页

    2020-07-13 15:32:20
    首先必须要明白一点:所有的网页,不管是动态网页还是静态网页,都Web服务器所创建的。 动态网页和静态网页的最明显区别在于:显示内容是否变化。 静态网页就是内容固定、不会变化的网页,比如

    网页的构成

    通常在浏览器看到的网页其实是由以下三层信息构成的一个共同体 :
    结构层:是由HTML或XHTML之类的标记语言负责创建
    表示层:由CSS负责完成
    行为层:负责客户和网页的交互问题,比如客户点击按钮或者链接操作,行为层负责执行该操作引发的后续的一系列动作。行为层的交互功能主要是由脚本来完成。

    动态网页和静态网页

    首先必须要明白一点:所有的网页,不管是动态网页还是静态网页,都是由Web服务器所创建的。
    动态网页和静态网页的最明显区别在于:显示内容是否变化。
    静态网页就是内容固定、不会变化的网页,比如博客文章,你今天打开和明天打开看到的是同样的内容,张三和李四浏览同一个页面,看到的也是同样的内容。
    动态网页就是内容不断更新变化的网页,比如股票行情页面,每日新闻页面,其内容是不断变化的。

    注意几点:

    1. 所有的网页,不管是动态网页还是静态网页,都是由Web服务器所提供的。
    2. Web服务器最主要的功能是提供静态的html文件。日常的上网浏览大多是网页浏览,少数时候才会有一些动态数据的提交操作。
    3. web应用有两种架构模式:BS和CS。区别在于数据在哪端处理,BS是数据在服务器端处理,CS是把数据从服务器拉取到客户端处理。
    4. 不管是BS还是CS,对于用户来说,同一个页面,做了一个操作后页面就不一样了,这都是动态页面。

    动态网页的两类技术

    相对应B/S和C/S这两种架构模式,动态网页也有两种技术:“浏览器端Scripts”和"服务器端Scripts"。
    “浏览器端Scripts”就是CS模式,"服务器端Scripts"就是BS模式。

    浏览器端Scripts
    浏览器端Scripts指的是从服务器拉取数据到浏览器端,由浏览器的JavaScripts负责执行运算,然后形成最终网页。

    原生方式:JS +Ajax
    我在浏览器端打开一个网页(html),加载完成之后,使用ajax访问网络得到json数据,使用js操作,在页面中追加元素,并生成最终html显示出来 。
    从设计模式的角度看,客户端和服务器之间的数据传输实际上是一个订阅者模式。
    原生的“JS +Ajax ”方式其实是数据刷新的拉模式,也就是说客户端永远是主动的,只有客户端发出Ajax请求,服务器才能把新数据推给客户端,所以缺点就在于:数据更新不及时。服务端永远不能主动推数据通知客户端去更新数据,所以原生的“JS +Ajax ”方式就不能适应实时数据刷新场景。
    使用MVVM框架:backbone、vue、reactor、angular
    MVVM框架其实就是实现订阅者模式的推拉结合双向数据通信,在客户端和服务器之间建立双向数据通道,

    服务器端Scripts:Jsp,ASP,PHP方式
    也就是jsp动态网页技术:在服务器端执行“数据处理+页面刷新”,并返回最终html页面。
    当浏览器向Web服务器请求打开包含服务器端Scripts的网页时(扩展名为.php、.asp、.aspx、.jsp、.cgi等),服务器执行里面的服务器端Scripts,将结果转换成HTML网页(扩展名为.htm或.html),然后传送给浏览器并关闭连接。

    常见的服务器端Scripts
    •CGI(Common Gateway Interface):CGI是在服务器端程序之间传输送信息的标准接口,而CGI程序是符合标准接口的Scripts,通常由Perl,Python或C语言所编写 (扩展名为.cgi)
    •JSP(Java Server pages):JSP是sun公司所提供的动态网页技术,可以在HTML原始文件中嵌入Java程序并由Web服务器负责执行(扩展名为 .JSP).
    •ASP(Active Server Pages):ASP程序是在Microsoft IIS Web服务器上执行的Scripts,通常由VBScripts或JavaScripts所编写(扩展名为.ASP),而新一代的ASP.NET程序则改由功能较强大的Visual Basic、Visual C#、Microsoft J#、等.NET兼容语言所编写(扩展名为.aspx)
    •PHP(PHP:Hypertext Preprocessor):PHP程序是在Apache、Microsoft IIS等Web服务器上执行的Scripts,跨平台(UNIX,FreeBSD,Windows,Linux,MacOS…)

    展开全文
  • 我们在学习web开发的过程中,有些基础的概念还是需要掌握的,如果你有仔细的研究过网页,相信你会对伪静态以及html静态有一定的兴趣,它们之间的区别什么呢?相信你会很想知道这个答案。  伪静态网站本身...
  • 1.java web--动态web

    2017-11-22 10:02:48
    通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(*.htm或者是*.htm)还是动态资源。...
  • Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器Tomcat的默认模式。 二、为什么整合 整合的最主要原因为了在现有的硬件条件下提供最大...
  • NFS一种很早的技术,单机的存储在服务器方面还是非常主流的,但nfs唯一的就是缺点比较大就是没有集群版,做集群化还是比较费劲的,文件系统做不了,这一个很大的弊端,大规模的还是需要选择一些分布式的存储,...
  • 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念。 构建一个专业的网站一项巨大的工作!对于新手我们应该从小事做起,也就是说咱们不可能立马就要求...
  • 思路这样的,首先由个页面来操作网站变灰还是不变灰,然后把选择的值(变灰,不变灰)传入到后台方法,存入一个静态变量中,让后再找到网站的公共页面加入判断代码动态显示变灰的代码。第一步创建操作页面。图片:...
  • 到底web服务器的极限多少呢...目前的web基本上都是动态的,为了提高性能,我们常常会使用各种各样的手段优化,例如减少IO,合理的字符串使用和操作,memcached等等。但是尽管全部优化都做足了,全动态web点击率...
  • 页面静态化技术:就是把一个动态的页面变成...伪静态:所谓伪静态是从url地址上看一个静态页面,但是实际上还是对应一个动态页面。使用web服务器的rewrite机制(url的重写机制)来实现。 一、真静态页面的实现 ...
  • 搭建完环境压力测试之后发现,访问页面...在网上百度了一下,发现nginx结合apache的环境比较好,可以发挥apache处理动态页面的优势,同时利用nginx处理静态页面强大的功能,实现动静页面分离的效果。  apache可以整合
  • 往往动态的jsp页面,不需要缓存的,一个动态的玩意儿你缓存了干嘛。但是往往那些持久的,不变的静态资源你需要进行缓存。这样可以加快浏览器的访问速度。 代码 缓存静态资源: @WebFilter(filterName = "...
  • flask入门(三)静态文件前言上篇文章讲到 flask 的模板文件如何使用,印象模糊的...静态文件(static files),在通常的 web 项目下,指的内容不需要动态生成的文件。比如图片、CSS 文件和 JavaScript 脚本等。...
  • 不管是web前端技术还是其他IT技术也好,其实都从零基础开始学习的,你可以直接学习或者通过相近经历转行。所以新人不需要因零基础而担心自己学不会。想要成为合格的WEB前端工程师,其实也不是很难的事情,主要...
  • 一、初始web最初知道网站用html写的,静态的,会动的那个显示效果,内容完全没变,只是有时候移动了,有时候隐藏了。这个时候,我认为:浏览器一个html的解释器和http的解释器的合体。服务器一个接收http请求...
  • 一、初始web最初知道网站用html写的,静态的,会动的那个显示效果,内容完全没变,只是有时候移动了,有时候隐藏了。这个时候,我认为:浏览器一个html的解释器和http的解释器的合体。服务器一个接收http请求...
  • 什么静态静态是相对真静态来讲伪静态只是把URL改成静态形式,实际上还是动态网页伪静态有着真静态一样的SEO什么重定向(很常用重点学习)将网络请求重新定一个方向,转到别的位置分为内部和外部,区别外部...
  • 不管是web前端技术还是其他IT技术也好,其实都从零基础开始学习的,你可以直接学习或者通过相近经历转行。所以新人不需要因零基础而担心自己学不会。想要成为合格的WEB前端工程师,其实也不是很难的事情,主要...
  • 不管是web前端技术还是其他IT技术也好,其实都从零基础开始学习的,你可以直接学习或者通过相近经历转行。所以新人不需要因零基础而担心自己学不会。想要成为合格的WEB前端工程师,其实也不是很难的事情,主要...
  • 一、概述刚开始学习Javaweb开发的小伙伴都有一个疑惑:用jsp开发前端还是用...原因:不明确区分HTML和jsp,不知道静态页面和动态页面的作用虽然jsp里面有HTML标签,但是HTML是静态页面,而jsp是动态页面简单的说:...
  • Web2.0与Web1.0

    2017-02-09 16:07:00
    区别动态网站与静态网站最基本的方法通常区别是否基于数据库的开发模式,也就是网页固定内容还是可在线更新内容。 Web2.0相对Web1.0的新一类互联网应用的统称。Web1.0的主要特点在于用户通过浏览器获取信息。...
  • 19Web服务

    千次阅读 2019-05-27 17:10:00
    Web服务 Web服务 Micosoft.Net平台架构中的分布式系统主要包括两部分:用ASP.Net技术构建服务器端动态网页,以及Web服务(Web Service或XML Web ...Web中无论是静态网页还是动态网页,数据都被嵌入到网页中,...
  • 前端web搭建及常用web页面书写技巧

    千次阅读 多人点赞 2020-11-22 16:29:10
    (1)还是直接请求, 但是会经过web server判断, 如果是静态资源就直接请求, 如果是动态, 就呀哦动态拼接, 然后再返回。 二:如何搭建静态网站 购买服务->安装jdk和tomcat以及配置好环境变量->把web文件放...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 524
精华内容 209
关键字:

web是静态还是动态