本地模拟服务器CDN(静态HTML,CSS,JS)开发

所谓本地开发环境就是和线上cdn(a.longencdn.cn)一样的目录结构和功能,提供了一个本地镜像,开发者直接在本地镜像的对应目录中作开发即可,包括一些html静态文件,css文件及JS文件等。比如说服务器cdn项目目录结构是 a.longencdn.cn/apps/js,  那么我们在本地也和服务器目录一样,访问 a.longencdn.cn 的时候 apache 首先在开发机上寻找文件,找不到去正式环境去 download 文件,一并返回给客户端。a.longencdn.cn/apps/js.这样做的好处有以下几点:

优点:

1. 调式比较方便。 比如线上要更改需求,比如要更改JS,css,那么我们把demo下载到本地,对本地的相应的JS,css更改,如果ok的话,把相应的JS,css文件提交到svn上即可。(因为本地的目录和线上一样的,所以他们会先查找本地的文件,如果没有找到再往服务器找相同的文件名js或者css。)。

2.  也可以模拟combo合并js,css文件。减少请求,提高性能。

比如雅虎的首页JS文件如下:

使用&符合合并或者压缩多个JS,css文件。

比如淘宝首页JS文件如下:

多个JS文件使用逗号(,)隔开,合并,减少请求数。这些都是使用combo进行文件合并,这些,我们完全可以使用php服务器在本地开发模拟,比如:

拔赤github上封装了合并及压缩JS,css文件的PHP,拔赤自动合并或者压缩JS/CSS 。下面我们来看看使用本地PHP来模拟线上CDN。

环境搭建

1.  安装PHP,我这边直接安装wamp5.

2.  进入apache根目录,打开配置文件 httpd.conf 如:

把以下文件都打开:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule include_module modules/mod_include.so

接着 再添加一句:让html执行PHP

AddType application/x-httpd-php .html .htm .php .phtml .shtml

将shtml支持打开(开启shtml主要是为了多人协作时更加方便)

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

3. 添加虚机的配置,打开extra/httpd-vhosts.conf,将下面代码拷贝进去,并根据注释提示的内容,自行修改,主要是将 DocumentRoot 和 RewriteCond 中的路径(D:/dev/a.longencdn.cn/)如:

添加如下面代码:

<VirtualHost *:80>
    ServerAdmin [email protected]-host.example.com
    DocumentRoot "D:/wamp5/wamp/www"
    ServerName localhost

    #这里修改为你本机的开发目录
    <Directory D:/wamp5/wamp/www>
        Options +Includes
        Order deny,allow
        Allow from All
    </Directory>

</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]-host.example.com
    DocumentRoot "D:/dev/a.longencdn.cn/"
    ServerName a.longencdn.cn

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^\?.*\.(js|css|js,|css,)$ [OR]
    RewriteCond %{QUERY_STRING} ^\?.*\.(js?.+|css?.+)$ [OR]
    RewriteCond %{REQUEST_FILENAME} -min\.(js|css) [NC]
    RewriteRule ^/(.*)$ /cb.php?%{REQUEST_URI} [QSA,L,NS,NC]

    #这里D:/dev/a.longencdn.cn/修改为你本机开发目录
    RewriteCond D:/dev/a.longencdn.cn/%{REQUEST_FILENAME} !-F  

    #这里修改为你本机的开发目录
    <Directory D:/dev/a.longencdn.cn>
        Options +Includes
        Order allow,deny
        Allow from All
    </Directory>
</VirtualHost>

其中:

DocumentRoot "D:/wamp5/wamp/www" 是指:如下图:

DocumentRoot "D:/dev/a.longencdn.cn/"  是在本地也建立了一个文件目录,D:/dev/a.longencdn.cn, 再下面就是放项目的文件,比如文件名叫apps,再把拔赤写的cb.php复制放到a.longencdn.cn根目录下,如:其中cb.php文件相对应的地方也要改下:如

4. 接着打开hosts文件 绑定加一句 127.0.0.1  a.longencdn.cn 就ok了。

最后我们可以来演示下: 假如我项目文件apps下有js文件 其中里面有2个js文件,分别为a.js和b.js 代码分别如下:

a.js
function A(){
   console.log("我是A函数");
}

b.js

function B(){
    console.log("我是B函数");
}

那么我们可以直接在本地服务器下访问a.js:如:

b.js访问如下:当然我们可以连着写a.js,b.js 模拟淘宝的cdn代码,如下:ok,通过以上可以看到,已经可以访问且对多个js合并了。

下面分别对拔赤的php文件 合并及压缩的文件提供下载  及 我本地的apache2 conf文件配置供下载:1.  拔赤的php合并及压缩下载。2.  apache2 conf文件配置下载。

本地模拟服务器CDN(静态HTML,CSS,JS)开发,布布扣,bubuko.com

时间: 2024-12-29 04:11:05

本地模拟服务器CDN(静态HTML,CSS,JS)开发的相关文章

从零开始学JAVA(08)-使用SpringMVC4 Restful 风格引用静态文件 css/js/png

在写完helloworld后想给网页加点样式(*.css),结果怎么也显示不了,百度了很多种方法后试行尝试,试验成功并记录下来,方便以后查看. 时隔两年,继续学习JAVA,太久没学了,忘记得差不多,还好以前写的helloworld,还能用. 一.关于开发环境 eclipse-jee-neon-1a-win32 Jdk 1.8u112 (32位版本) SpringMVC 4.3.4.RELEASE apache-tomcat-8.5.8 二.helloworld.jsp文件中的引用的样式表为 st

Gulp:静态资源(css,js)版本控制

为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源: 然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩) 文件目录结构 html模板文件 <html> <head> <link rel="stylesheet" href="../styles/one.css"> <link rel="stylesheet" href=&qu

django基础知识之管理静态文件css,js,images:

管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] 在项目根目录下创建static目录,再创建当前应用名称的目录 mysite/static/myapp/ 在模板中可以使用硬编码 /static/my_app/myexample.jpg 在模板中可以使用static编码 { % l

socket本地模拟服务器+客户端(二)

建立两个py文件,分别打开两个cmd界面,即可进行通信.服务器端运用多进程,连续不断的处理从客户端接收到的数据:客户端通过一个list不断给客户端发送数据. (每个连接都必须创建新线程(或进程)来处理,否则,单线程在处理连接的过程中,无法接受其他客户端的连接.)本例中,多进程其实没有起到作用. 代码以及解释如下: #socket服务器端程序 import socket import time from multiprocessing import Process #多进程和多线程一样的用法 de

SpringMVC 静态资源配置 css js img等

请求地址如下: http://localhost:2323/static/js/main.js 配置: spring-mvc.xml(并非必须放入static目录下,该位置自定义,根据location查找) <mvc:resources mapping="/static/**" location="static/"/> 将资源放入location属性指定的目录下,此处为static目录     原文地址:https://www.cnblogs.com/h

html+css+js开发文本编辑器,有各种排版功能!

当点击上面的按钮,例如添加图片,就会直接向textarea文本框添加一段预设的图片标签.如果添加超链接,就会向文本框添加超链接标签,我们只需要把超链接和链接文字填上去即可. <!DOCTYPE html> <html> <head> <title>Hello World</title> <meta http-equiv="content-type" content="text/html; charset=utf

IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求

今天将开发好的ASP.NET站点部署到客户的服务器上后,发现了一个非常头疼的问题,那么就是IIS7的应用程序池是集成模式的话,ASP.NET项目中自定义的HttpModule会处理静态文件(.html .css .js .jpeg等)请求,而这不是我预期的效果,因为我只想让托管文件(aspx, ascx 及 MVC等)的请求被自定义HttpModule处理,但是我发现在IIS7的集成模式下所有请求都会进入HttpModule被处理. 后来我尝试将IIS7站点下的应用程序池改为了经典模式,这样的话

web服务器/cgi/html/css/js

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S架构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用.本节主要介绍这种应用的开发和移植工作. Web 典型的嵌入式Web服务器有Boa (www.boa.org)和thttpd (http://www.acme.com/software/thttpd/)等,

【转载】IIS7.5(经典模式)访问静态资源(.css和.js文件)提示:未能执行 URL

IIS7.5(经典模式)静态资源(.css和.js文件)提示:未能执行 URL “/”应用程序中的服务器错误. 未能执行 URL. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpException: 未能执行 URL. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 堆栈跟踪: [HttpExce