在IIS6,7中部署ASP.NET网站

news/2024/5/20 23:22:36/文章来源:https://blog.csdn.net/weixin_30342209/article/details/98460705

查看web.config文件

ASP.NET网站与一般的桌面程序不同,不是拷贝过来就能运行的(数据库连接除外)。 要想运行它,通常需要一些配置过程。
但是,我们到底需要配置什么呢?
答案是:查看web.config

web.config通常会放在网站的根目录,这个文件中包含了一最重要的网站运行参数。比如: connectionStrings,httpHandlers,httpModules ,这些参数都是网站开发人员认为运行网站所必需的参数。 因此,如果我们想将一个网站部署到IIS中,必须首先打开web.config文件,逐个确认这些重要的参数是否符合要求。

这里要补充一点的是:有些开发人员喜欢将各类参数放在appSettings配置节中,即便是数据库的连接字符串也放在appSettings中。 我只能说:这是个很不好的习惯。因此,在部署这类网站时,可能还要注意一下appSettings是否包含数据库的连接字符串, 这就需要人工识别了。当然了,appSettings中还可能包含一些重要目录配置,同样,也只能人工识别了。

今天要讲述的参数主要涉及到IIS和SQL SERVER,因此本文将会分开介绍它们。
而且IIS还会分为6和7.5二个版本来单独演示。
SQL SERVER则以 2005 Express版本来演示。
我演示所用的操作系统为:Windows Server 2003和Windows 7 ,它们分别附带了IIS 6和IIS 7.5

说明:通常我们在部署网站时,都应该先根据web.config定义的那些重要参数来配置网站。 但为了让您能对这些参数有较深刻的印象,下面的演示中,不是先根据web.config来配置网站, 而是采用【从创建一个站点后,一步一步地发现问题并解决】的方式来讲解这个过程。

回到顶部

在IIS中创建网站

每个ASP.NET程序都是一个网站,要想运行它们,都需要在IIS中部署它们, 部署的第一步就是要在IIS创建一个网站。 在IIS中创建网站的过程比较简单,因为IIS都提供向导界面来帮助我们完成这个配置过程, 因此,本文打算省略那些无意义的贴图。

说明,我们先从IIS6开始。 这里只要求您在IIS中创建一个网站,把它配置成网站就可以了,其它的配置我们后面再谈。
示例项目:点击此处进入 MyMVC DEMO 下载页面

网站创建好了吗?我停下来等一下吧。

 

我的网站配置好了,现在已经可以用浏览器访问它。

现在我们可以切换风格来试试效果,点击页面右上角的【3】试试看。

噢,怎么一开始就出错了:

看到这个提示,不要茫然。为了界面友好,我用JavaScript捕获了这个错误,但现在我们需要知道错误的原因是什么,怎么办呢?

有FireBug或者Fiddler2吗?
如果有,就打开它们吧。下图是我用FireBug看到的错误原因(需要重新执行刚才的操作):

从FireBug中,我们可以看到,刚才的操作触发了一次请求,请求的地址是:/AjaxStyle/SetStyle.cspx
cspx是个什么扩展名呢?还是打开web.config看一下吧。

<httpHandlers><add path="*.cspx" verb="*" type="MyMVC.AjaxHandlerFactory, MyMVC" validate="true" /><add path="*.aspx" verb="*" type="MyMVC.MvcPageHandlerFactory, MyMVC" validate="true" /><add path="/mvc/*" verb="*" type="MyMVC.MvcPageHandlerFactory, MyMVC" validate="true" />
</httpHandlers>

在web.config中,网站要求配置的一些httpHandlers中,第一个便是针对【cspx】扩展名的。

这里我要解释一下【cspx】这个扩展名了。在以前的示例中,我选择了【cs】这个扩展名表示一个AJAX调用, 但是,后来发现很多人在IIS中部署中遇到问题了(原因后面再说)。于是,这次我换了个扩展名。 然而,又有人问我:cspx, 是不是写错了? 或许他认为应该是【aspx】才对。

这个问题我用邮件回答过多次了,今天用博客的形式再回答一次:
取什么扩展名都不重要,我只要选择没有用过的扩展名来区分是AJAX调用就可以了。 我也可以取【fish】来做为AJAX请求地址的扩展名,只是担心一些人认为俗气而已。

回到顶部

IIS6 添加扩展名映射

回到IIS,在网站节点上,右击,从弹出的菜单中,选择【属性】,然后在弹出的对话框中,选择【主目录】选项卡,并点击【配置】按钮。 此时的界面应该是这样的:

找到【ascx】这个扩展名,双击它,是不是弹出下面这个对话框?

照着图片的操作去完成:复制【可执行文件】的设置路径。然后点击【取消】关闭对话框。

此时将回到【应用程序配置】对话框,点击【添加...】按钮,

照着图片操作吧。对话框中的【可执行文件】的参数,此时已在Windows剪切板中,现在只要粘贴就可以了。

全部【确定】,关闭所有对话框,再回到浏览器,然后再试一次。

现在可以操作了吧?

 

 

先不要点击其它链接,还是来对刚才的操作做个小结吧。

在ASP.NET中,有时候我们可能会需要创建自己所需的HttpHandler来处理一些特殊的请求。
我的MyMVC框架就有这个需求:将AJAX请求与页面的请求分开来处理。
所以我们需要一些特殊格式的URL。通常选择一个没用过的扩展名会比较方便,因此我选择了 cspx
为了能告诉ASP.NET将以下格式的ULR映射到AjaxHandlerFactory

/Fish.AA.AjaxTest/Add.cspx
/Fish.BB.AjaxTest.Add.cspx
/Fish/BB/AjaxTest/Add.cspx
/AjaxDemo/GetMd5.cspx
/AjaxDemo.GetMd5.cspx

我就需要在web.config中注册这种URL模式,并且为了能最好的匹配这些URL,我可以使用下面的配置:

<httpHandlers><add path="*Ajax*/*.cspx,*Ajax*.*.cspx" verb="*" type="MyMVC.AjaxHandlerFactory, MyMVC" validate="true"/>
</httpHandlers>

我们可以用Visual Studio自带的WebDev.WebServer.EXE来运行网站程序。
本来,这一切都是很完美的。
可是,IIS中并不支持这么复杂的path设置,它只能支持简单的扩展名映射。
所以,我也只好使用简单的扩展名:【.cspx】来向IIS注册。

我再来解释一下,为什么在ASP.NET中,前面那个path能够识别我上面所说的5种格式的URL?
在ASP.NET管线的处理器映射阶段,ASP.NET会将【*Ajax*/*.cspx,*Ajax*.*.cspx】转换成下面的正则表达式, 再来检查每个请求的URL是否匹配。

(?:\A|(?<=/))[^/]*Ajax[^/]*/[^/]*\.cspx\z|(?:\A|(?<=/))[^/]*Ajax[^/]*\.[^/]*\.cspx\z

有兴趣的话,您也可以检验一下,这个正则表达式与前面的URL都能匹配。
从这里也可以看出ASP.NET对处理器的映射实现,是可以支持比较复杂的URL模式的。
关于处理器的映射过程可以参考我的博客【细说 HttpHandler 的映射过程】

前面解释了我为什么最终选择【.cspx】来向IIS注册处理器了。
在注册时,还有二个参数也比较重要:
1. 可执行文件:其实就是一个实现了ISAPI的模块,IIS会将匹配的请求交给它,然后由它再交给ASP.NET。 这个参数的路径比较长,我们根本不需要记住它,只需要找个已有配置中,将它COPY出来就可以了。
2. 确认文件是否存在:这个参数一定不要选择。因为我们请求的URL并没有对应的文件存在。

这里要补充一点:
我以前发布的FishWebLib DEMO中, 使用了【cc】这样的扩展名,可以按照上面的方法注册。
但我还使用了【cs】和【ascx】这二个扩展名。由于这二个扩展名的注册已经存在了, 所以,我需要修改它们的配置:双击配置项,确保不要勾选【确认文件是否存在】即可。

回到顶部

IIS6 无扩展名的映射

让我们再回到前面已配置好的示例中,此时页面的显示应该是这个样子的:

点击一下页面上的链接【/mvc/Customers】试试。

不要以为我是在故意设置陷阱哦。我在设计示例程序时,根本也没想到会这样。

到这里,可能有人会想,在httpHandlers中不是还有个【path="/mvc/*"】没有配置吗?
继续按照前面的方法去配置就能解决问题了。

好吧,我再照着前面的方法再试着注册【path="/mvc/*"】试试,结果如下:

因此,前面的方法对于这类【无扩展名】的URL来说,是无效的。

 

对于这类无扩展名的URL,在IIS6中可以使用添加【通配符应用程序映射】的方法来解决。
回到【应用程序配置】对话框,点击【插入...】按钮,弹出下面的对话框:

按照图片来设置一下吧。然后,【确定】关闭对话框。此时的设置应该是这样的:

全部点击【确定】关闭所有对话框。

让我们再次回到示例程序,此时可以发现,什么问题都没有了。

再补充一句:如果使用这种方法,前面注册cspx的过程就不需要了。因为此时所有的请求都会交给ASP.NET,而ASP.NET会识别我在web.config中所做的配置。

回到顶部

目录的写入权限

为了方便MyMVC DEMO的部署过程, 这次我选择了XML文件做为数据源。写入XML的时机是在ASP.NET被停止运行的时候(Application_End事件中)。

让一个在IIS中运行的网站停止运行的方法就是停止网站所使用的【应用程序池】。
可以在网站属性对话框中找到网站所使用的【应用程序池】:

再切到IIS的【应用程序池】的列表,找到前面那个【应用程序池】,右击鼠标,
从弹出的菜单中点击【属性】菜单,然后在出现的对话框中选择【标识】选项卡:

从这个图片中,我们可以知道网站以哪个Windows帐号在运行。记住这里,后面会用到。

好吧,点击【取消】关闭对话框。

补充一点:要想知道网站以什么帐号运行,还可以查看【Windows任务管理器】, 找到w3wp.exe所在进程即可:

回到示例程序中,我们可以随便添加一些数据。
然后,在【应用程序池】列表中,停止网站所使用的应用程序池。再启动它。
重新刷新示例程序的页面。

发现什么了?是不是数据没有保存下来?

如果发现数据没有保存起来,可以继续阅读。

数据不能保存的原因并不是因为代码没有执行,而是因为,网站运行的帐号没有权限写数据文件。
XML是放在网站的App_Data目录中,为了检查网站是否有写入权限,可以在App_Data目录上右击, 然后选择【属性】菜单,切换到【安全】选项卡:

经过前面的分析,我们已经知道网站是以【NETWORK SERVICE】帐号运行, 然而,在这个目录的安全设置中,并没有允许【NETWORK SERVICE】帐号能有写入权限, 所以,网站在停止运行时,是由于没有权限才导致不能保存数据的。

此时,我们可以赋予【NETWORK SERVICE】帐号对App_Data目录有写入权限。 设置如下图:

好了,您可以再去重启网站所在的【应用程序池】,会发现现在数据能正常保存了。

回到顶部

SQL SERVER的配置

在FishWebLib DEMO中, 我为了演示我的通用数据访问层而引入了SQL SERVER, 因此,示例程序需要SQL SERVER的支持。

首先,还是回到web.config,来看一下示例程序需要访问什么样的数据库:

注意:示例程序需要连接的SQL SERVER服务器是:localhost\sqlexpress

我的机器上安装了三个SQL SERVER的实例:

因此,我需要以【命名实例】的方式来访问。
如果您的机器将SQL SERVER做为【默认实例】来安装,则需要修改为:localhost

在示例的压缩包中,我提供了SQL SERVER所需的数据文件:db\MyNorthwind.mdf
在运行示例前,我需要将它【附加】到SQL SERVER中。

现在需要先启动 SQL Server Management Studio ,连接SQL SERVER的实例后,
在【对象资源管理器】的树型控件中,找到【数据库】节点,右击,然后点击【附加...】菜单,
在出现的对话框中,点击【添加...】按钮,选择MyNorthwind.mdf文件,然后点击【确定】按钮。

我这边出错了。

再仔细地看一下,发现是日志文件没有找到造成的。
是的,我并没将日志文件也放在压缩包中。
好吧,在对话框中删除日志文件就可以了,再次【确定】。

还是出错:

注意了:这次的错误与前面的错误并不一样。 这次是说没有目录的写入权限。

当遇到没有目录的访问权限时,我们首先要知道程序是以什么帐号在运行。
这是非常重要的。要不然,如何配置目录的访问权限呢?

判断程序以什么帐号运行最简单方法就是:打开【Windows任务管理器】,然后去找进程。
这个方法可参考前面的过程。最终我们可以发现sqlserver.exe是以【NETWORK SERVICE】帐号在运行(我的机器是这样)。
好吧,再按照前面设置App_Data目录权限的方法再设置MyNorthwind.mdf文件所在目录的访问权限。

再次尝试【附加】数据库,将能成功完成。
在我机器上,现在已经可以运行示例程序了。

说明:如果由于种种原因,不使用【Integrated Security=SSPI】的连接认证方式,还可以使用【用户名/密码】的方式, 那就需要修改web.config中的连接字符串了。

小结:
1. 由于SQL SERVER的数据文件保存在Windows操作系统中,因此必须授予运行SQL SERVER进程的帐号所必需的目录访问权限。
2. 连接到SQL SERVER时,也可能会因为SQL SERVER验证连接身份而失败,那么也必须配置需要的访问权限。

到此为止,示例所需的IIS配置以及SQL SERVER的配置都介绍完了。

回到顶部

在IIS7中部署ASP.NET程序

前面介绍了如何在IIS6中部署一个ASP.NET网站,现来看一下在IIS7.5中如何完成这个过程。
接下来的演示将以Windows 7的IIS7.5为准。

IIS7.5相对于IIS6的改进,给我的感觉是:部署ASP.NET网站简直太容易了。

IIS7为了兼容老版本,它支持二种模式来运行ASP.NET程序:集成模式,经典模式。
所谓的经典模式,其实就是为了兼容IIS6的模式。下文将着重介绍集成模式,这样才能体现IIS改进的优势。

在IIS6中,我们需要配置扩展名的映射或者通配符映射,将请求交给一个ISAPI筛选器,然后由它再交给ASP.NET, 最终由ASP.NET再将请求交给我们的httpHandlers, httpModules。 我们在web.config中配置的httpHandlers, httpModules,对于IIS6来说是不可见的,所以,只能再次到IIS中配置。

从IIS7开始,IIS支持以一种称为【集成模式】的方式运行ASP.NET程序,此时,IIS能直接将请求交给ASP.NET的httpHandlers和httpModules, 而且还可以直接从web.config中直接读取配置,因此,只要我们把web.config准备好,配置任务就非常简单了。

由于这个缘故,我在后来提供的示例中,在web.config中已增加对IIS7的支持。
以下就是二个示例项目所需的IIS7的配置部分。

FishWebLib DEMO只需要下面的配置就可以了:

MyMVC DEMO所需的配置如下:

以上这些配置会反映在IIS7.5的哪些地方看到呢?
请看下图:

在这个【处理器映射】列表中,前三个不正是我在web.config中的配置嘛。

前面还有一块fileExtensions的配置又是做什么的呢?
请看下图:

对于FishWebLib DEMO来说,它使用了 cs, ascx 这样的扩展名, 而且这二个扩展名按照默认的配置是禁止访问的,所以在那个示例中,这段配置的用途是将这二个扩展名变成允许访问。

我在使用Windows7的IIS7.5时,还发现一个与IIS6不同的地方,它会默认为每个网站创建一个独立的应用程序池,而且运行帐号也不是NETWORK SERVICE, 不过,我们可以容易地在【应用程序池】的属性中去修改它。

小结:
在IIS7.5中部署ASP.NET网站是件容易的事,前提是:事先准备好web.config中的system.webServer配置节。
然后只需要创建在IIS中创建一个网站,并指向程序目录即可。
注意:如果程序需要访问本地文件或者数据库,那么还需要设置文件系统或者数据库的访问权限,具体可参考前面相关小节。

回到顶部

80端口和域名

在前面的演示中,为了简单,选择了25678这个端口,那是因为80端口已被使用。 这样做实际上不影响网站的运行,不过,URL看起来就不美观了。 通常HTTP默认是使用80端口,如果使用这个端口,那么URL中就不会出现端口号了。 为了让URL地址看起来更美观,按下来我将演示如何使用80端口。

在IIS中,为了能让一个网站程序运行在80号端口中,有2个办法:
1. 为网站程序使用其它的IP地址的80端口。
2. 为网站指定域名绑定。

我们可以在网卡的配置中新增一个IP地址(如果已经有多个IP就不用这样做了):

然后在IIS中,为网站设置【绑定】,使用这个IP地址了。请参考下图:

除了使用新IP地址的方式外,我们还可以使用域名的方式让网站可以在80端口下面运行。
方法还是在IIS中设置网站的【绑定】操作,给网站指定一个域名即可:

最终的设置应该是下面这个样子的:

此时我们就可以使用下面二种方式来访问我的示例网站了:
http://192.168.0.222
http://www.mymvc-demo.com

不过这里又有个新问题:域名从哪里来?

答案有二个(对于演示来说):
1. 修改 C:\Windows\System32\drivers\etc\hosts 文件,
  增加一个映射条目:127.0.0.1 www.mymvc-demo.com 即可。
2. 如果您使用的是Windows Server的操作系统,也可以自己给自己分配域名,请继续阅读。

在Windows Server的操作系统中,我们可以使用DNS服务创建自己的域名,大致的过程是:
1. 创建一个反向查找区域。
2. 创建一个正向查找区域。
3. 在正向查找区域新建一个WWW的主机。
4. 在IIS中为网站设置绑定,指向新的域名。
5. 设置网卡的DNS服务器地址,指向有DNS服务的机器。
这种方式或许对于单台机器来说,比直接修改host文件要麻烦,但如果是在局域网内部使用将会非常方便。

DNS配置的相关过程如下:(向导中没有贴图的步骤可以直接确定)

现在我们就可以使用域名的方式来浏览我的示例了:

转载于:https://www.cnblogs.com/jordan2009/p/3919214.html

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

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

相关文章

【网站太慢怎么破?】从原理到分析到解决

#客户原创#【网站太慢怎么破&#xff1f;】从原理到分析到解决&#xff0c;前端和服务器角度优化网站全攻略~~http://weibo.com/1644971875/BkcBNm4sj &#xff08;这个绝对重磅推荐啊&#xff01;&#xff09; 转载于:https://www.cnblogs.com/aliyunblogs/p/3939170.html

各大招聘网站信息实时查询浏览

最近听得较多的跳槽、面试之类的&#xff0c;相信很多园友也开始蠢蠢欲动了&#xff0c;有的甚至早已经开始了。最近我也在琢磨着换工作的事。说得俗套点&#xff0c;人在外面不就为了那么点工资么。现在找工作大部分都是通过在网上投简历&#xff0c;然后等电话 通知面试的。然…

纯CSS一分钟让网站拥有暗黑模式切换功能

本文字数&#xff1a;6784字 预计阅读时间&#xff1a;17分钟 前言 暗黑模式这个概念最早起源于MacOS系统的Mojave&#xff0c;提供浅色主题和深色主题两种皮肤供用户选择&#xff0c;深色主题就是我们常说的暗黑模式。为了眼睛健康&#xff0c;笔者在手机、平板和电脑上都选择…

30个让人兴奋的视差滚动(Parallax Scrolling)效果网站--转

视差滚动&#xff08;Parallax Scrolling&#xff09;是指让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验。作为今年网页设计的热点趋势&#xff0c;越来越多的网站应用了这项技术。今天这篇文章就与大家分享30个视差滚动效果的…

前端通用SEO技术优化指南

本文字数&#xff1a;2585字预计阅读时间&#xff1a;8分钟背景近期团队开发的新产品的官网上线了&#xff0c;随之而来的问题就是如何让网站更快更好的传播出去。当然SEO就是最常见的手段之一&#xff0c;对官网的SEO工作有利于产品的网络传播和分享。有的团队会有专人负责SEO…

Windows Server 2008 R2服务器在IIS上添加网站

1、安装网站之前&#xff0c;我们先需要确定aspx模块是否安装成功&#xff0c;在管理工具下找到IIS管理器&#xff0c;在IIS管理器下找到应用程序池&#xff0c;单击右键选择添加应用程序池&#xff0c;即可弹出相关的弹出框。 我们看到.NET Framework版本中看到有2.0和4.0版本…

bugku-网站被黑(这个题没技术含量但是实战中经常遇到)

题目地址&#xff1a;http://123.206.87.240:8002/webshell/ 进去之后没什么特别的提示 但题目说了 实战 经常遇到 所以 直接 御剑 跑一下 http://123.206.87.240:8002/webshell/shell.php 进入到一个 后台登陆页面 打开burp 使用burp中的 Intruder模块 爆破 用bur…

访问服务器网站出现 HTTP ERROR 500 该网页无法正常运作

项目在本地写好后上传到服务器访问出现如下图所示&#xff1a; 经过查看php日志文件发现问题在于数据库连接错误&#xff0c;如下图&#xff1a; 将项目中数据库配置部分修改成服务器中数据库的用户名和密码&#xff0c;重启服务器即可正常访问。

网站设计中常用的一些jq效果

只做会做网站设计不会前端是不行的&#xff0c;现在很多网站设计师都会精通前端CSSjquery&#xff0c;但是今天要说的是是我个人在一家厦门网站设计公司中经验笔记&#xff0c;都是很实用的&#xff0c;希望能帮助网站设计者们&#xff0c;现在越来越多的网站运用上了Jquery技术…

如何利用Python监控你女/男朋友每天都在浏览什么网站?

需求&#xff1a; (1) 获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间&#xff0c;并存在一个txt文件中 (2)将这个txt文件发送给指定的邮箱地址(你的邮箱) (3)建立例行任务&#xff0c;每天定时自动完成这些操作&#xff0c;你就可以通过邮件查看你对象每天看…

给你8个接私活的网站,保证你月薪轻松上W

今天给大家推荐几个江湖卖艺赚钱养家的好渠道&#xff08;程序员&#xff1a;8个接私活的网站&#xff0c;只要你有码&#xff0c;那“我”就有钱&#xff01;&#xff09;一起来看看吧&#xff01; 1、程序员客栈 https://www.proginn.com/ 2、快码众包 https://www.kuai.m…

不会吧,学过爬虫连这个网站都爬不了?那Python岂不是白学了

本文内容 系统分析目标网页html标签数据解析方法海量图片数据一键保存 环境介绍 python 3.8pycharm 模块使用 requests >>> pip install requestsparsel >>> pip install parseltime 时间模块 记录运行时间 通用爬虫 导入模块 import requests # 数…

工程师英语和计算机证书查询,点击进入国家硬件维修工程师证书查询网站

工程师证书查询网站人力资源社会保障部指定查询国家职业资格证书的唯一官方网站。涵盖全国各省市、各行业、各央企颁发的证书。电脑硬件维修工程师网上能查看国家工信部硬件维修工程师证书查询网址&#xff1a;http://www.ceiaec.org/index.htm工程师证书编号在网上怎么查询如果…

根目录_怎样找到网站根目录?

什么是根目录&#xff1f;什么是根目录&#xff1f;根目录&#xff0c;或根文件夹&#xff0c;是顶层目录一个的文件系统。目录结构可以直观地表示为上下颠倒的“树”&#xff0c;因此术语“ root ”代表顶层。所有其它目录、子目录、目录的“分支”等都储存在根目录中。尽管所…

网站服务器怎么理解,http请求的原理怎么理解

(1)是请求方法&#xff0c;GET和POST是HTTP中最常用的方法&#xff0c;除了DELETE、HEe、OPT、NS、PUT和Sea之外。但目前大多数浏览器仅支持GET和POST。它提供了一个HiddenHtyMethodFilter&#xff0c;可以让你通过“_method”的表单参数来指定这些特殊的HTTP方法(实际上&#…

Tornado 网站demo 二

连接数据库 methods 中建立一个文件 db.py 分别建立起连接对象和游标对象 #!/usr/bin/env Python # codingutf-8import pymysql conn pymysql.connect(host"localhost", user"root", passwd"123456", db"testdb", port3306, charset&…

【redux】详解react/redux的服务端渲染:页面性能与SEO

亟待解决的疑问 为什么服务端渲染首屏渲染快&#xff1f;&#xff08;对比客户端首屏渲染&#xff09; react客户端渲染的一大痛点就是首屏渲染速度慢问题&#xff0c;因为react是一个单页面应用&#xff0c;大多数的资源需要在首次渲染前就加载好&#xff0c;这较大程度地拖慢…

顶级白嫖!!!八个python免费自学网站一周搞定python(抓紧收藏)。。

导读 人工智能必将到来&#xff0c;在那个时代&#xff0c;我们的工作方式会发生很大的改变&#xff0c;尤其是Python都已经进入了中小学教育的大纲&#xff0c;在智能为主的时代&#xff0c;Python就像现在的电脑一样&#xff0c;每个人工作中必备的工作技能&#xff0c;学会…

新手学电脑入门教程_适合新手程序员学习编程的10个常用网站,超实用

我们很多程序员刚学习时都到处找资源&#xff0c;今天小编我把最常用的10个编程网站分享给大家&#xff0c;大家只要经常浏览这10个网站&#xff0c;学好编程足够了。1、 Googlehttps://www.google.com/2、Stackoverflowhttp://stackoverflow.com/3、githubhttps://github.com/…

页面布局让footer居页面底部_谷歌SEO的网站页面内链布局3大方法!

在谷歌SEO里&#xff0c;网站中内链的重要性不言而喻。对于用户来说&#xff0c;合理的网站内链可以方便用户读取有用的信息&#xff0c;提升用户粘性&#xff0c;降低跳出率。从谷歌搜索引擎来说&#xff0c;合理的网站内链&#xff0c;不仅能够吸引谷歌搜索引擎蜘蛛的抓取&am…