webpack使用HtmlWebpackPlugin进行cdn配置。
在上一篇文章中,我们介绍了cdn的实现原理。现在,让我们来认识一下如何在形式化开发中使用cdn功能。要使用cdn功能,我们需要cdn服务提供商。我们可以自己搭建,也可以使用一些知名的服务商。幸运的是,市场上有许多免费的cdn服务提供商,例如:其中,BootCDN是Bootstrap中文网支持和维护的前端开源项目免费CDN服务,项目资源与cdnjs仓库同步。界面比较美观,支持搜索功能,可以在线测试cdn是否正常,下面以Bootcdn为例。
在以前的项目开发中,我们经常使用webpack来构建项目,它有两个主要功能,即
webpack中cdn的使用是在静态资源打包生成的时候完成的。主要原理是使用html-webpack-plugin动态插入cdn链接。
这里就不介绍webpack的使用了,以vue-cli2.x生成的默认项目为例。
Html-webpack-plugin是webpack的一个插件,可以动态创建和编辑Html内容。在html中使用esj语法可以读取配置中的参数,简化了html文件的构造。
这次我们主要用它来动态插入cdn链接,比如链接标签,脚本标签。
在线项目地址
vue-cli2.x
使用webpack类型创建一个名为webpack-cdn-demo的vue项目。如果安装的vue-cli是3.x版,命令会有所不同。请参见vue-cli3了解详细信息。
安装依赖性
启动一个项目
下面简单介绍一下目录结构。
build文件夹中的webpack.prod.conf.js是我们的主文件,我们在其中动态设置不需要打包的模块,并构建适当的链接。
在webpack项目中,引入的第三方资源将被统一打包到vender文件中。我们可以通过webpack的externals属性设置包排除这个模块。详情请参见外部扩展。
在前面的步骤中,我们创建了包括vue和vue-router的项目。正式开发中,会有element-ui等ui库。为了演示方便,我们安装了element-ui和axios两个模块,并在构建时实现了这个模块以cdn的形式引入。
安装时注意记住-S,它的作用是安装后在package.json项目文件中插入记录,后续操作需要读取已安装的模块。
对于cdn,我们可以自己搭建,也可以使用专业的cdn服务商。在这里,我们使用免费的cdnbootcdn。选择免费的cdn有很多好处,但毕竟有一个隐患,就是服务可能会崩溃。
依次搜索前面的模块,结果如下
根据规则,cdn资源路径规则如下
其他cdn服务商也一样。
其实使用cdn就是在webpack热启动打包的时候动态插入脚本和样式链接。为了维护方便,我们在build/utils.js文件中增加了几个方法,以后可以在webpack.dev.conf.js和webpack.prod.conf.js上使用。
如果没有build/utils.js,可以添加到其他文件中,只要后续步骤可以操作即可。
命名模块名,与package.json相同
范围模块范围命名
Jsjs地址
Csscss地址
这里要特别注意scope,这是webpack配置的外部参数下的信息。比如vue的作用域名称是Vue,vue-router的作用域名称是VueRouter,element-ui的作用域名称是element。同样,jq的作用域名称是JQuery。具体方法是先引入这个资源,然后在控制台中依次输入近似值,一一匹配(目前还没有找到更好的方法)。
我们可以在webpack热启动时使用cdn进行本地调试。
在build/webpack.dev.conf.js中,已经默认引入了utils.js,可以直接调用相关方法。如果是自定义文件,记得介绍一下。
我们可以给它添加一些自定义属性,方便在index.html调用。,现修改如下:
cdnConfig和onlyCss自定义属性可以通过htmlWebpackPlugin.options以html格式读取..
更多html-webpack-plugin配置。官网,这里暂时不需要更多。
打包的时候我们用的是cdn,配置和之前的dev差不多,但是需要多做一步。
注意这里的externalModules,后面会用到,也就是比dev多几个步骤。
添加与dev相同的两个配置,但只需要将Css改为true,因为我们在打包时要使用比css更多的内容。
webpack配置已经完成,相关参数已经添加到html-webpack-plugin中,可以直接在页面上使用。语法是ejs,类似于ASP.NET、jsp和php。
及格
webpack配置已经修改,项目需要重启才能生效。
打包项目
可见包装体积大大减少。
Cdn资源在页面上也有正确的介绍。
最后,git地址:https://gitee.com/zhkumsg/webpack-cdn-demo
比悲伤更悲伤的分割线。
原来两年前有人做了一种类型的webpack-cdn-plugin。
网站访问速度很慢,用CDN是否可以解决这个问题呢?
CDN可以解决部分问题,但需要先搞清楚自己网站的问题在哪里,同时需要知道CDN可以在哪些方面发挥最佳作用。
1.网站的主要内容如果是静态的,比如图片,而服务器到访问者之间的网络不佳(比如服务器在国外,而访问者主要在国内),那么使用国内的CDN服务可以改善访问速度的问题。
2.如果网站的主要内容是交互的(比如论坛类的),每个页面的信息可能是实时更新实时生成的,如架构为PHP+数据库(ASP+数据库等类似模式),那么CDN并不能发挥太多的作用,这种情况下先确保服务器的处理能力足够反而是更加重要,如果是虚拟主机或者是VPS做服务器的话,先确保服务器的资源足够网站程序的运行(CPU的核数与线程数,内存大小)。特别是网站的访问量比较大的情况下,这个问题根据突出。
CDN主要是解决静态内容的网络传输问题,如果确认瓶颈在这方面,那么使用CDN确实可以起到立竿见影的作用(比如前面提到的,服务器在国外,而大多数访问者在国内)。
京瓷m5021cdn怎么扫描?
1.首先连接电脑,并且成功安装扫描仪驱动。
2.找到打印机图标,然后右击并点击“开始扫描”。
3.选择并点击“扫描”,然后再点击“快速扫描设置”选项。
4.将文件格式设置为所需目标格式后保存,就可以扫描到电脑上了
腾讯云的cdn流量包是用来干嘛的?我搭了个服务器,那流量怎么没办法用?
CDN流量包是专门给网站提供加速服务的,不是服务器上用的。
服务器有自有的流量或者带宽,不一样的。cdn浴霸开关怎么使用?
具体的方法如下
1.拿着浴霸的遥控器按住待机键开关3秒钟,遥控器上的屏幕时间开闪动,
2.接着按着上面的时间强弱调整小时,然后再按待遥控器的待机键,分钟开始闪动,
3.按着遥控器的强弱键调整分钟,在按遥控器的待机键结束,cdn浴霸开关即可使用了。
域名下的文件怎么做cdn加速?
做cdn加速一般是用cname的方式接入,将域名cname到cdn,再回源到服务器,设置需要加速的文件类型,例如jscsspng等等