Express 页面缓存

app.set("cache view",true); --设置页面缓存

开发模式下博主建议不要这么做,因为开发中我们会频繁的对页面的样式、js等进行修改,如果开启了页面缓存我们需要强制刷新页面才能正常调试,会很麻烦。

compression 模块内容动态压缩

npm install -save compression # 添加compression 模块

var compression=require("compression"); //引入
app.use(compression()); --注入到express

页面伪静态化

网站上线已经一个多月了,发现被百度收录的页面没几个,每天的访问量也是趋于零。说啥自己的文章也都是原创啊,也做了链接提交, 但是不收录,一点面子都不给,难受想哭!后来仔细想想分析原因应该是页面URL的问题,所以决定对文章详情页做伪静态。伪静态的实现比较简单只是对URL进行了正则匹配处理,下面是主要实现代码:

/* 文章详细信息页面路由*/
route.get(/^\/detail\/([a-zA-Z0-9]{10,})\.html/,function(req,res,next){
   var article_id=req.params[0];//文章id
   
})

Gulp自动化构建

Gulp做为一个流自动化构建工具,可以帮助我们压缩css、js,编译less,合并多个css文件等。Gulp的概述和使用详解不在本文进行过多介绍,网上关于这方面的文章一搜一大把,自己去补脑。

这里简要简述一下Gulp中task、 src、dest、watch 这4个方法的基本使用:

/* 定义一个任务,我们使用gulp命令编译代码时需要使用这个任务名 ,beforeTasks 故名思议就是需要等待beforeTasks 中定义的任务执行完毕后才会执行当前任务*/
gulp.task("taskname"[,beforeTasks],function(){ });
/* src方法用于输出一个和 globs 中定义相匹配的文件流,globs 可以是一个文件路径或一个文件路径数组,这些文件路径是支持正则表达式的 */
gulp.src(globs[, options]); /* dest 方法用于将一个流写入到文件中,path 只支持路径不能进行文件的重命名*/
gulp.dest(path[, options]); /* watch 用来监听文件变化, globs 与src中的globs用法相同 。我们可以监听css或js文件的变化,让gulp自动去执行我们写的压缩css或编译less的任务*/
gulp.watch(globs[, options,callback]);

弄懂使用方法以后我们直接来撸代码,gulp固然强大,但是所有的事情不可能全部交给它做,我们需要依赖它的一些插件。

npm install -save-dev gulp-less  // 编译less
npm install -save-dev gulp-load-plugins //按需加热加载 gulp 插件
npm install -save-dev gulp-minify-css //压缩css
npm install -save-dev gulp-rename //对输出的文件重命名
npm install -save-dev gulp-uglify //压缩js

gulpfile.js 文件中的主要实现代码

var gulp=require("gulp");
var plugins = require('gulp-load-plugins')(); gulp.task("default",function () {
    gulp.src("public/css/front/*.less")
        .pipe(plugins.less())
        .pipe(gulp.dest("public/css/front/"))
        .pipe(plugins.minifyCss())
        .pipe(plugins.rename({
            extname: ".min.css"
            }))
        .pipe(gulp.dest("public/css/front/"));     //压缩js文件
    gulp.src("public/scripts/admin/*[^(min)].js")
        .pipe(plugins.uglify())
        .pipe(plugins.rename({
            extname: ".min.js"
        }))
        .pipe(gulp.dest("public/scripts/admin/"));     gulp.src("public/scripts/front/*[^(min)].js")
        .pipe(plugins.uglify())
        .pipe(plugins.rename({
            extname: ".min.js"
        }))
        .pipe(gulp.dest("public/scripts/front/")); });

最后编译后的结果

我们在页面中引入压缩后的.min文件就行。

本文原文地址:https://www.limitcode.com/detail/59577c1635ce20031080ba90.html

Node.js 实战(一)之—优化汇总的更多相关文章

  1. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层

    视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...

  2. 《Node.js实战(双色)》作者之一——吴中骅访谈录

  3. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...

  5. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON

    视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...

  6. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  7. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks

    视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...

  8. iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备

    安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...

  9. Node.js实战(二)之HelloWorld示例

    经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...

  10. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

随机推荐

  1. Qt比较字符串Qstring是否相等

    Qt比较字符串Qstring是否相等 QString str = "相等"; if(str ==QString::fromLocal8Bit("球形")) { ...

  2. ecshop数据表结构说明

    深深地看看这个吧,会很有帮助的... ecs_account_log 用户帐号情况记录表,包括资金和积分等 log_id mediumint 自增ID号user_id mediumint 用户登录后保 ...

  3. 【JQuery】性能优化方法

    尽管JavaScript比JAVA C++慢很多,JQuery比原生Js还慢很多,但是我们通过良好的编程习惯还是能提高代码执行的效率. 一.选择器的使用 选择同一个元素,各种方法之间的性能是不一样的, ...

  4. mysql开启缓存、设置缓存大小、缓存过期机制

    目录 一.开启缓存 1.修改配置文件my.ini 2.命令方式 二.查看是否生效 1.query_cache_type 使用查询缓存的方式 2.have_query_cache 设置查询缓存是否可用 ...

  5. http响应时长分析

    curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}::time_connect:%{time_connect}::time ...

  6. RabbitMQ官方教程四 Routing(GOLANG语言实现)

    在上一教程中,我们构建了一个简单的日志记录系统. 我们能够向许多消费者广播日志消息. 在本教程中,我们将向其中添加功能-我们将使仅订阅消息的子集成为可能. 例如,我们将只能将严重错误消息定向到日志文件 ...

  7. 高级UI-自定义动画框架

    有的时候会需要做一些自定义的动画效果,在会反复用到的动画效果可以考虑做成动画框架,方便使用,做成框架的话就需要考虑很多的问题,最典型的问题就是属性和方法必须要是可配置的,这里就来聊一聊自定义动画框架的 ...

  8. java获取当前年、半年、季度、月、日、小时 开始结束时间等

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 获取 当前年.半年 ...

  9. 洛谷 题解 UVA12661 【有趣的赛车比赛 Funny Car Racing】

    [题意] 在一个赛车比赛中,赛道有\(n(n<=300)\)个交叉点和\(m(m<=50000)\)条单向道路.有趣的是,每条道路都是周期性关闭的.每条道路用5个整数\(u,v,a,b,t ...

  10. 2019年广东省赛gdccpc回顾

    本次比赛状态一般般,热身赛单人挂机爆零让自己慌了一整天. 开题直接抓E题入手,准备交题后关机(辣鸡云桌面),开机后又告诉我要关机,心急连交两发结果都WA了,最后靠队员提醒救了回来.心态还算稳住了.后面 ...