iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >高性能WEB开发怎么实现JS、CSS的合并压缩
  • 955
分享到

高性能WEB开发怎么实现JS、CSS的合并压缩

2024-04-02 19:04:59 955人浏览 泡泡鱼
摘要

本篇内容介绍了“高性能web开发怎么实现js、CSS的合并压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

本篇内容介绍了“高性能web开发怎么实现jsCSS的合并压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

存在的问题:

合并、压缩文件主要有2方面的问题:

1. 每次发布的时候需要运行一下自己写的bat文件或者其他程序把文件按照自己的配置合并和压缩。

2. 因生产环境和开发环境需要加载的文件不一样,生产环境为了需要加载合并、压缩后的文件,而开发环境为了修改、调试方便,需要加载非合并、压缩的文件,所以我们常常需要在JSP中类似与下面的判断代码:

<c:if test="${env=='prod'}">    <script type="text/javascript" src="/js/all.js"></script> </c:if> <c:if test="${env=='dev'}">    <script type="text/javascript" src="/js/1.js"></script>    <script type="text/javascript" src="/js/2.js"></script>    <script type="text/javascript" src="/js/3.js"></script> </c:if>

缓存问题:在现在JS满天飞的时代,大家都知道缓存能带来的巨大好处,但缓存确实非常麻烦的一个问题,相信很多人曾经历过下面的情况:为了让程序更快,在服务器上为JS加上缓冲5天的代码,但产品更新后第二天就接到电话说系统出错,详细了解后就发现是缓存引起的,让用户删除缓存后就会OK。原因很简单,就是你JS已经修改了,但用户还在使用缓存中的老JS。在经历几次这种情况,被领导数落了几次后。没办法只能把JS的缓冲去掉,或者改成8个小时。可这样就完全失去了缓存的优势了,哪我们到底需要解决哪些问题才能让我们使用缓冲顺心如意了?

1. 如何在修改了某个JS后,自动把所有引用该JS页面的代码中加上1个版本号?

2. 该如何生成版本号,根据什么来产生这个版本号。

可能有人为了解决上面的缓存问题,写了个JSP标签,通过标签读取JS、css文件的修改时间来作为版本号,从而来解决上面2个问题。但这种方法有下面几个缺点:

1. 每次请求都要通过标签读取读取文件的修改时间,速度慢。当然你可以把文件的修改时间放到缓存中,这样也会加到了内存使用量。

2. 在html静态页面中用不了

3. 如果你们公司是如下的部署发布方式(我们公司就是这样),则会失效。每次发布,不是直接覆盖之前的WEB目录,运维的为的发布方便,要求每次发布直接给他们1个war包,他们会把之前WEB目录整个删除,然后上传现在的war包,这样就导致程序运行后,所有文件的***修改时间都是解压war的时间。

分享自己项目中的处理方案:

为了解决上面讨论过的问题,在下写了1个如下的组件,组件中根据我们自己的实际情况使用了文件大小来做为文件的版本号,虽然在文件修改很小(比如把字符a改成b),可能文件大小并没有变,导致版本号也不会变。

但这种机率还是非常低的。当然如果你觉的使用文件修改时间作为版本号适合你,只需要修改一行代码就行,下面看下这个组件的处理流程(本来想用流程图表达,***还是觉的文字来的直白写):

1. 程序启动(contextInitialized)

2. 搜索程序目录下的所有merge.txt文件,根据merge.txt文件的配置合并文件, merge.txt文件实例如下:

# 文件合并配置文件,多个文件以|隔开,以/开头的表示从根目录开始,

# 空格之后的文件名表示合并之后的文件名

# 把1,2,3合并到all文件中

1.js|2.js|3.js all.js

#合并CSS

/css/mian.css|/css/common.css all.css

3. 搜索程序目录下所有JS,CSS文件(包括合并后的),每个文件都压缩后生成对应的1个新文件。

4. 搜索程序目录下所有JSP,html文件,把所有JS,css的引用代码改成压缩后并加了版本号的引用。

实例:

实例的文件结构如下图:

高性能WEB开发怎么实现JS、CSS的合并压缩

看JSP原始代码(程序运行前):

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "Http://www.w3.org/TR/html4/loose.dtd"> <% boolean isDev = false;  // 是否开发环境%> <html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>JSP Page</title>         <% if(isDev){ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/Jquery-1.4.2.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/1.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/2.js"></script>         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/1.css" />         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/2.css" />         <% }else{ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2.js"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/all.js"></script>         <link type="text/css" rel="stylesheet"  href="<%=request.getContextPath() %>/css/all.css" />         <% } %>     </head>     <body>         <h2 class="c1">Hello World!</h2>     </body> </html>

程序运行后JSP的代码:

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%      boolean isDev = false;  // 是否开发环境  %> <html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>JSP Page</title>         <% if(isDev){ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2-3gmin.js?99375"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/1-3gmin.js?90"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/2-3gmin.js?91"></script>         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/1-3gmin.css?35" />         <link type="text/css" rel="stylesheet" href="<%=request.getContextPath() %>/css/2-3gmin.css?18" />         <% }else{ %>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.2-3gmin.js?99375"></script>         <script type="text/javascript" src="<%=request.getContextPath() %>/js/all-3gmin.js?180"></script>         <link type="text/css" rel="stylesheet"  href="<%=request.getContextPath() %>/css/all-3gmin.css?53" />         <% } %>     </head>     <body>         <h2 class="c1">Hello World!</h2>     </body> </html>

加3gmin后缀的文件全部是程序启动时自动生成的。

“高性能WEB开发怎么实现JS、CSS的合并压缩”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 高性能WEB开发怎么实现JS、CSS的合并压缩

本文链接: https://www.lsjlt.com/news/66004.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 高性能WEB开发怎么实现JS、CSS的合并压缩
    本篇内容介绍了“高性能WEB开发怎么实现JS、CSS的合并压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • JS与CSS的合并压缩如何实现
    本篇内容介绍了“JS与CSS的合并压缩如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!存在的问题:合并、压缩文件主要有2方面的问题:1...
    99+
    2023-07-04
  • Web前端性能优化之资源合并与压缩的示例分析
    这篇文章将为大家详细讲解有关Web前端性能优化之资源合并与压缩的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。资源合并与压缩两个目的减少http请求数量减少请求资源的大小google首页案例学习h...
    99+
    2023-06-08
  • Java与Netty怎样实现高性能高并发
    本篇文章给大家分享的是有关Java与Netty怎样实现高性能高并发,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我...
    99+
    2023-06-04
  • android开发中项目实现一个图片压缩功能并能指定大小
    android开发中项目实现一个图片压缩功能并能指定大小?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先是一个根据分辨率压缩的类,首先对图片进行一次压缩 ...
    99+
    2023-05-31
    android roi
  • web开发总移动端如何实现图片上传旋转、压缩功能
    小编给大家分享一下web开发总移动端如何实现图片上传旋转、压缩功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在手机上通过网页...
    99+
    2024-04-02
  • Android开发中怎么实现一个下载zip压缩文件的功能
    今天就跟大家聊聊有关Android开发中怎么实现一个下载zip压缩文件的功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下载:import java.io.BufferedInpu...
    99+
    2023-05-31
    android roi
  • CSS怎么实现提高渲染性能
    这篇文章主要讲解了“CSS怎么实现提高渲染性能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS怎么实现提高渲染性能”吧!1、不要使用*{}经常有前端开发...
    99+
    2024-04-02
  • 掌握Java和Unix并发开发技术,轻松实现高性能应用!
    随着互联网和大数据时代的到来,高性能应用越来越受到开发者的关注。而并发开发技术是实现高性能应用的关键之一。本文将介绍Java和Unix并发开发技术,帮助读者轻松实现高性能应用。 一、Java并发开发技术 Java作为一门面向对象的编程语言...
    99+
    2023-09-11
    unix 并发 开发技术
  • 使用Golang的同步技术实现高性能并发
    在Golang中,可以使用以下同步技术来实现高性能并发:1. Mutex:使用互斥锁(Mutex)来保护共享资源的访问。互斥锁只允许...
    99+
    2023-10-08
    Golang
  • Java中的ConcurrentSkipListMap:高性能并发容器的实现原理。
    Java中的ConcurrentSkipListMap:高性能并发容器的实现原理 在Java编程中,容器是一个非常重要的概念,它们可以存储和管理数据集合。随着多线程编程的普及,高性能并发容器也成为了Java编程的一个热门话题。其中,Conc...
    99+
    2023-09-19
    并发 数组 容器
  • Android开发怎么实现图片大小与质量压缩及保存
    本篇内容主要讲解“Android开发怎么实现图片大小与质量压缩及保存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android开发怎么实现图片大小与质量压缩及保存”吧!Android中图片有四...
    99+
    2023-06-30
  • Java语言如何实现实时数据处理和NumPy并发的高并发性能?
    Java语言和NumPy都是在数据处理领域广泛使用的工具,它们都提供了高效的数据处理能力。在实时数据处理和高并发性能方面,Java语言和NumPy的处理方式略有不同。本文将介绍如何使用Java语言和NumPy实现实时数据处理和高并发性能。...
    99+
    2023-09-23
    实时 numy 并发
  • 使用Golang的锁机制实现高性能并发处理
    在Golang中,锁机制主要通过`sync`包来实现。`sync`包提供了多种锁类型,如互斥锁(`Mutex`)、读写锁(`RWMu...
    99+
    2023-10-09
    Golang
  • Node.js 与 Sails.js 的联手合作:实现敏捷而高效的Web开发
    在当今瞬息万变的数字时代,企业需要快速推出高性能的web应用程序,以满足客户的需求,保持竞争优势。Node.js和Sails.js的登场,为这一需求提供了完美的解决方案。作为顶尖的JavaScript框架,两者珠联璧合,实现了敏捷高效的...
    99+
    2024-02-26
    Node.js, Sails.js, web开发, 敏捷开发, 高效开发
  • SpringBoot怎么整合Redis实现高并发数据缓存
    这篇文章主要讲解了“SpringBoot怎么整合Redis实现高并发数据缓存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么整合Redis实现高并发数据缓存”吧!什么是...
    99+
    2023-07-05
  • Java 并发集合的最佳实践:编写健壮、高性能的代码
    使用正确的集合类型 ConcurrentHashMap: 用于高并发场景下的键值对存储。 CopyOnWriteArrayList: 用于读多写少的列表操作。 BlockingQueue: 用于线程间通信和任务队列管理。 同步访问 ...
    99+
    2024-04-03
    并发集合是 Java 中一种特殊的数据结构 它允许多线程同时访问和修改。为了编写健壮且高性能的并发代码 采用最佳实践至关重要。
  • ASP.NET Web开发框架怎么实现功能导航
    本篇内容主要讲解“ASP.NET Web开发框架怎么实现功能导航”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET Web开发框架怎么实现功能导航”吧!功能导航主要解决如何布局功能,把...
    99+
    2023-06-17
  • web开发中怎么实现一键截图功能
    这篇文章主要为大家展示了“web开发中怎么实现一键截图功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中怎么实现一键截图功能”这篇文章吧。正文在实现...
    99+
    2024-04-02
  • 异步协程开发指南:实现高并发的短信发送功能
    异步协程开发指南:实现高并发的短信发送功能在现代互联网应用中,短信发送是一个常见的功能需求。无论是注册验证、密码找回还是营销推广,短信都是一种高效且普遍接受的通信方式。然而,在高并发场景下,如何快速、可靠地发送大量的短信成为了一项挑战。为了...
    99+
    2023-12-17
    异步 协程 高并发
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作