| 引入本地资源跨域问题
学习前端上的一些新东西,常常从一个简单的 html 文件开始,然后通过 src、href 引入一些脚本或资源来查看效果。比如,在一个 html 中引入 less 文件 ,使用浏览器预览,结果如下图所示:
原因呢?
浏览器告诉我跨域了,并且称: CORS 策略 只支持这些协议:http、data、 chrome、chrome-extension 以及 https。显然,如果 html 文件中引用了其他资源,直接双击 html 文件、使用 file 协议 在浏览器中打开这种方式,不受浏览器 CORS 支持。
兵来将挡,既然是协议的问题,那就转协议。下方高能 >>
使用 Anywhere
anywhere 是一个随启随用的静态服务器,它可以随时随地将当前目录变成一个静态文件服务器的根目录。使用步骤如下:
此时,便可以像资源管理器一样,可视化预览目录下的一切文件,而且不存在跨域问题,可使用的协议是:http 或 https
令人惊喜的是,当上图“新建文件夹”中是这样一堆文件的时候,浏览器自动预览了 html 文件:
关于 anywhere 的指令:
尽管上面已经针对某些异常场景给出了完美的方案。我的疑问在于,为什么“裸奔”情况下,href 引入 css文件 ,src 引入 js 文件 ,却没有跨域毛病。因缺乏理论支撑,暂时存疑。
静态网站根本不需要什么服务器,是个电脑就能当服务器使用,如果现在的每个静态文件有相同的内容,而且要改成的内容也相同那就好处理多了,直接用工具(Dreamweaver)或其他的网页编辑工具替换就可以了,如果改成不一样的那就麻烦了
mmap主要实现方式是将读缓冲区的地址和用户缓冲区的地址进行映射,内核缓冲区和应用缓冲区共享,从而减少了从读缓冲区到用户缓冲区的一次CPU拷贝。
相比mmap来说,sendfile同样减少了一次CPU拷贝,而且还减少了2次上下文切换。
sendfile是Linux21内核版本后引入的一个系统调用函数,通过使用sendfile数据可以直接在内核空间进行传输,因此避免了用户空间和内核空间的拷贝,同时由于使用sendfile替代了read+write从而节省了一次系统调用,也就是2次上下文切换。
整个过程发生了2次用户态和内核态的上下文切换和3次拷贝,具体流程如下:
sendfile方法IO数据对用户空间完全不可见,所以只能适用于完全不需要用户空间处理的情况,比如静态文件服务器。
[1] https://zhuanlanzhihucom/p/357820303
传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了。这种情况下一般都会需要一个静态资源的服务器。
搭建nginx服务器首先得安装nginx服务,关于nginx服务的安装可以参考我的另一篇博客《nginx服务安装》这里直接介绍静态服务器的配置
进入nginx安装目录的conf目录下,修改nginxconf文件,在一个server{}中添加 一个location 部分配置代码如下
root@ubuntu:/usr/local/nginx/conf# vi nginxconf
server {
listen 80;
server_name localhost;
location / {
root html;
index indexhtml indexhtm;
}
location /image/ {
root /usr/local/myImage/;
autoindex on;
}
}
从上面的配置可以看出来 端口为80,server_name为localhost(写ip地址也可以)
location /image/ {
root /usr/local/myImage/;
autoindex on;
}
这个配置表示输入 localhost:80/image/ 时会访问本机的/usr/local/myImage/image/ 目录。所以要新建/usr/local/myImage/image/ 目录,同时还要在nginx安装目录的html目录中新建一个 与 location中 image同名的image目录,虽然该目录里面什么也没有,在/usr/local/my Image/image/ 中我们放一张1jpg上去,重启nginx服务,就可以通过 localhost:80/image/1jpg访问了
root@ubuntu:/usr/local/nginx/html# mkdir image
root@ubuntu:/usr/local/nginx/html# mkdir /usr/local/myImage/image
#放一张照片上去#
root@ubuntu:/usr/local/nginx/html# cd /usr/local/myImage/image
root@ubuntu:/usr/local/myImage/image# ls
1jpg
root@ubuntu:/usr/local/myImage/image#
重启 nginx
root@ubuntu:/usr/local/nginx/sbin# /nginx -s reload
root@ubuntu:/usr/local/nginx/sbin#
打开浏览器 输入 server_name:80/image/1jpg 就可以访问该静态
0条评论