本文目录一览:
- 1、CSS 的未来:Cascade Layers (CSS @layer)
- 2、求大神指导,有没有前端学习视频,自己找了好多,感觉有点乱,觉得学的路线会错
- 3、使用npm常见的报错处理
- 4、如何评价 CSS Modules
- 5、请问谁有发送邮件的那个网页 HTML 源代码
- 6、怎么配置lighttpd的VirtualHost
CSS 的未来:Cascade Layers (CSS @layer)
最近在 Weekly 邮件推送中查阅到这样的一条信息:
会发现这条信息里面出现了一个CSS的新名词 CSS Cascade Layers ,出于好奇以及对新知识的渴望(说得我自己都信了,哈哈),于是查阅起 CSS Cascade Layers 的相关资料,试图搞懂它。
at-rule 规则, CSS Conditional Rules Module Level 3 新增的规则,是一条语句,它为CSS提供了执行或如何执行的指令,常见的 at-rule 规则有:
级联(层叠)与继承 经过多年的发展迭代,目前已有多个版本( CSS2.2、Level3、Level4 和 Level5 )
何为级联(层叠)?
层叠本质就是定义了如何合并来自 多个源 的属性值的算法,简单来说,CSS规则的顺序很重要。当两条同级别的规则应用到一个元素的时候,写在后面的就是实际使用的规则。
两条规则 优先级相同 ,所以顺序在最后的生效, h1 是 color:blue '胜出',显示蓝色。
css属性一般来自于哪几个源?
层叠(级联)算法如何过滤来自不同源的css规则?
过滤来自不同源的css规则后,确定同源优先级高低,决定谁“优胜”
了解级联算法有助于帮助我们理解浏览器是如何解决样式规则冲突,也就是浏览器决定哪个样式规则运用到元素上,更多相关 css级联 的了解:
何为继承?
当元素的一个继承属性没有指定值时,则取父元素的同属性的计算值 。只有文档根元素取该属性定义的默认值,类似的属性有 color 、 font-size 等 。
CSS是由 Cascading Style Sheets 三个词的首字母缩写,很多人将其称为 层叠样式表或者级联样式表 .
CSS Cascade Layers ,也叫做 CSS级联层 ,是 Cascading and Inheritance Level5 规范中新增了一个新的 CSS 特性,对应的CSS属性写法 @layer ,即 一个新的 @ 规则 ,也就是大家所说的 at-rule 规则。
为啥会出现@layer?
也就是说我们一般会使用选择器权重和顺序作为控制级联的方法,但是这样却会时常碰到:
使用较高权重的选择器来防止你的代码被后面的代码(或别人的代码)覆盖。但这也会引起另一个不良的现象,可能会在代码中新增很多带有 !important 的样式规则,这本身就会引起更多的问题,比如 !important 在 CSS 样式表中随处可见,需要覆盖的时候难以被覆盖 。
使用较低权重的选择器又很容易被后面的代码(或别人的代码)覆盖。比如你在引入第三方代码库或组件时,自己的代码可能被覆盖。
这两个现象也是编写CSS代码,特别是在一个大型项目或多人协作的项目中常出现。也给很多CSS开发者带来很多困扰。
虽然社区有很多第三方方案,如 CSS-in-JS 、 CSS Modules 和 CSS Scoped 等来协助解决级联所带来的问题,但由于 源码顺序(打包产物)仍然起着决定性的作用,顺序带来的覆盖和冲突依旧未真正的解决,而且选择器权重仍然比层的顺序(源码顺序)更重要 。
这样的背景促进了 @layer 的出现,要真正的解决级联带来的这些问题。
@layer 的出现,也要求我们对以往 css级联 有个新的了解,
可以看出 CSS的级联层 一般位于“Style 属性”(Style Attribute)和 CSS 选择器权重(Specificity)之间。
使用 CSS级联层 ,可以通过 @layer at-rule将 CSS 分成多个层。
1、使用@layer 块规则,并立即为其分配样式:
2、使用规则@layer 语句,没有指定任何样式:
3、将@import 与layer关键字或layer()函数一起使用
以上每一个都创建了一个名为 的级联层reset。
在下面的例子中,我们建立四个级联层: reset,base,theme,和utilities 。
重复使用级联层名称时,样式将附加到现有级联层。级联层的顺序保持不变,因为只有第一次的出现已经确定顺序:
重新使用级联层名称时层顺序保持不变的使@layer 语法变得更加方便和严谨。使用它,可以预先建立图层顺序,然后将所有 CSS 附加到它:
按以往CSS级联来进行分析的话, form input (多层级)的优先级会大于 input ,但是由于 级联层 所起的作用, @layer theme 的 input 会取胜。
级联层 支持嵌套使用,如下:
在这个例子中有两个级联外层:
就像一棵树,像这样,
如果要将样式附加到嵌套级联层,需要使用以下全名来引用它,
如果第一个 @media (min-width: 30em) 匹配(基于视口尺寸),则layout级联层层将在图层顺序中排在第一位。如果只有 @media (prefers-color-scheme: dark) 匹配,theme则将是第一层。
如果两者匹配,则图层顺序将为layout, theme。如果没有匹配,则不定义层。
随着 Cascade Layers 的出现,我们的开发人员将拥有更多的工具来控制 Cascade 。 Cascade Layers 的真正力量来自它在 Cascade 中的独特位置: Style 属性(Style Attribute) 和 CSS 选择器权重(Specificity) 之间。因此,我们不需要担心其他层中使用的 CSS 的选择器特异性,也不需要担心我们将 CSS 加载到这些层中的顺序.
了解到这里,是不是觉得 @layer 相当地cool,迫不及待地想去使用了,我们看一下 caniuse @layer 的兼容情况,
很遗憾,支持程度惨不忍睹,想真正使用可能还要再等等,对于明年三月份 Chromium 99 ,发布我们拭目以待。
当然现在如果想尝鲜,对于社区也有给出一些办法,
大家也可以试一试,感谢阅读!
求大神指导,有没有前端学习视频,自己找了好多,感觉有点乱,觉得学的路线会错
1.首先零基础学习前端先要有一个计划,了解前端要学习哪些技术。
2.做好自己的时间规划,如何快速入门前端那肯定是需要不断的提高自己的学习效率,学习过程中尽量把手机调至静音给自己一个安静的学习环境和氛围。
3.快速入门顾名思义肯定是少走弯路,在学习过程中看下自己身边有没有前端这方面的大神尽量多问,多交流,如果是没有的话,可以多去找一些前端的交流群,学习肯定是不能闭门造车。
学习是一个循序渐进的过程,前端的学习也是如此。
不论前端开发还是后端开发的学习都要求我们多动手,既要反复的看书,也把学习到的知识点第一时间去实践。前端的学习入门快要三个月,慢的要 5-6 个月左右,看个人的理解速度来评估,只要入门了不论理解能力,还是学习的速度都会有明显的提升。
在学习前端的过程中,除了要把学到的知识点第一时间去实践,也要在学习的每个阶段自己创建课题,用所学到的知识去实现课题的内容。这样可以更好有助于理解和累计一定的项目经验。
前端的学习从来不是孤军奋战,需要一个前辈的领路,也需要一个平台不断交流和思维碰撞。这样可以快速入门和少走弯路,也能让自己发现问题的根本所在。
阶段一
在学习前端之前呢,你需要一个编辑器,在网上你可以看到很多编辑器用来编写前端,甚至 Windows 系统默认的文本文档也可以作为前端代码的编辑器。俗话说,没有金刚钻怎么揽瓷器活,所以一个好的编辑器很重要,我在这里推荐给大家的编辑器是 VSCode。
思维导图
前端开发工具
一、HTML+CSS
前端的入门门槛是极低的,主要体现在 HTML 和 CSS 部分,运行环境就是浏览器,不像如 Java 需要配置开发/运行环境。
HTML 和 CSS 不是编程语言,HTML 是结构标签,CSS 是结构标签的样式配置。
HTML
属性
事件
标签
字符集
CSS
CSS基础教程
CSS样式
CSS框模型
CSS定位
CSS选择器
CSS高级
思维导图
HTML+CSS以上内容的学习用时 20天左右,再花 2 天的时间项目实践,这部分总花费时间在 22天左右。
二、HTML5+CSS3
HTML5 作为 HTML 的最新版本,引入了多项新技术,大大增强了对于应用的支持能力,使得Web技术不再局限于呈现网页内容。
HTML5 可以使开发者的工作大大简化,理论上单次开发就可以在不同平台借助浏览器运行,降低开发的成本,这也是产业界普遍认为 HTML5 技术的主要优点之一。
CSS3使用了层叠样式表技术,可以对网页布局、字体、颜色、背景灯效果做出控制。css3作为css的进阶版,拆分和增加了盒子模型、列表模块、语言模块 、背景边框 、文字特效 、多栏布局等等。
CSS3的改变有很多,增加了文字特效,丰富了下划线样式,加入了圈重点的功能。在边框方面,有了更多的灵活性,可以更加轻松地操控渐变效果和动态效果等等。在文字效果方面,特意增加了投影。
CSS3在兼容上做了很大的功夫,并且网络浏览器也还将继续支持CSS2,因此原来的代码不需要做太多的改变,只会变得更加地轻松。
HTML5
HTML5视频
HTML5音频
HTML5拖放
HTML5画布
HTML5 SVG
HTML5地理定位
HTML5 Web存储
HTML5 应用缓存
HTML5表单
CSS3
CSS3边框
CSS3背景
CSS3文本效果
CSS3字体
CSS3 2D转换
CSS3 3D 转换
CSS3 过渡
CSS3 动画
CSS3 多列
思维导图
HTML5+CSS以上内容用时 10 天左右,这部分内容是在 HTML+CSS 做的升级改进,只需要了解他们的一些特性即可,再结合这些特性做一些小项目加深学习。
四、JavaScript
JavaScript 是 web 开发者必学的三种语言之一,这里我们需要区别 JavaScript 和 Java 他们是完全不同的语言,不论是概念还是设计。javascript 部分需要我们学习的知识点如下所示:
认识JavaScript
基本语法
变量
数据类型
字符串
数字
布尔
数组
对象
Null
Undefined
5. 函数
内置函数
自定义哈数
6. 运算符
7. 流程控制
8. DOM对象
String
Array
Date
Boolean
Math
Number
9. BOM对象
WIndow
Navigator
Screen
History
Location
10. 综合实例
思维导图
javascript以上内容的学习用时 35天 左右,这里推荐几本 Javascript 的书籍,如下:
《JavaScript 高级程序设计(第3版)》,俗称红宝书。前七章讲的是语言特性,是重点学习的部分,必须需要反复阅读,直至完全理解为止。DOM、事件流、表单、JSON、Ajax 与最后几章也需要重点学习,这是一些常用的 Web API。至于本书的其余部分大致读一下就可以,不做重点要求。
《JavaScript 语言精粹》,俗称蝴蝶书。很薄的一本书总页数就 147 页,花一天时间就能看完,快的话半天就能看完。这本书虽然很薄,但是承载的内容却非常的丰厚和深入。JavaScript是一门有很多坑的语言,所以这本书”取其精华,去其糟粕“就是精粹了。
《你不知道的 JS》非常精彩的一本书,将 JavaScript 的细节一网打尽。
阶段二
这部分内容是对 JavaScript 的补充学习
四、 Jquery学习
1. 基础语法
2. 选择器
基本选择器
层次选择器
过滤选择器
表单选择器
3. DOM操作
查找节点
创建节点
插入节点
删除节点
复制节点
替换节点
包裹节点
属性操作
样式操作
4. 事件
事件绑定
事件冒泡
5. 动画
show、hide
fadeIn、fadeOut
slideUp、slideDown
自定义动画animate
动画回调以及停止动画
6. 常用工具
浏览器及特性检测
数组和对象操作
Layer UI,主要学习栅格布局,图标,动画,按钮,表单,导航,选项卡,进度条,面板,表格,时间线等
7. Ajax
8. Jquery插件编写
思维导图
请点击输入图片描述
二、其他
JavaScript 进阶
DOM+BOM综合演练
网页特效
ES6 进阶
bootstrap
animate.css学习
以上内容的学习用时 10天左右
阶段三
这部分是框架和前后端交互技术的学习
一、Vue
Vue基础
模版语法
计算属性侦听器
Class与Style绑定
条件/列表渲染
事件处理
表单输入绑定
组件基础、注册
Prop
自定义事件
2. Vuex
State
Getter
Mutation
Action
Module
3. Vue-router
认识路由
动态路由
嵌套路由
编程式导航
路由组件传参
4. axios
认识axios
全局配置
发送POST、GET请求等
思维导图
二、React
认识React
React元素渲染
JSX
组件
State
Props
事件处理
条件渲染
列表
组件API
组件声明周期
思维导图
三、Node
基础
console(控制台)
crypto(加密)
debugger(调试器)
fs(文件系统)
http(网络)
os(操作系统)
path(路径)
2. 高级
NPM介绍及使用
MVC模式简介
Express框架学习
链接Mysql
链接Redis
项目实战
思维导图
Node
四、webpack
概念
主要讲什么是入口,出口,loader,插件等
2. 入口
单个入口语法
对象语法
常见场景
3. 输出
用法
多个入口起点
高级进阶
4. 模式
development
production
5. loader
实例
配置
6. 插件
剖析
用法
配置
7. 配置
基本配置
多个Target
使用其他语言配置
8. 模块
思维导图
webpack
以上内容用时 两个月 左右
阶段四(扩展部分,了解即可)
一、Mysql
阶段一
认识mysql
安装mysql
创建数据库、数据表
学习常用的SQL命令,完成增删查改
2. 阶段二
学习Mysql关联查询,子查询等
学习Mysql常用函数
学习Mysql分组、分页、排序等
3. 阶段三
学习Mysql高级查询
了解存储过程,自定义函数等
了解Mysql配置文件
二、Redis
认识Redis
学习redis的数据类型
redis常用操作
redis事务
思维导图
数据库
以上内容用时 7 天左右
阶段五
一、项目管理篇
SVN使用
认识svn
安装
生命周期
启动模式
创建版本库
检出操作
解决冲突
提交操作
版本回退
查看历史
分支
标签
2. GIT使用
认识git
安装配置
工作流程
工作区、暂存区和版本库
创建仓库
基本操作
分支管理
查看历史等
标签
github
二、扩展部分
小程序
1. 了解小程序开发流程
2. 视图容器
view
scroll-view
movable-view
cover-view
cover-image
3. 基础内容
icon
text
rich-text
progress
4. 表单组件
button
checkbox
form
input
label
picker
picker-view
radio
slider
switch
textarea
5. 导航
navigator
function-page-navigator
6. 媒体组件
audio
image
video
camera
live-player
live-pusher
7. 地图(map)
8. 画布(canvas)
9. 开放能力
open-data
web-view
ad
official-account
apicloud(移动app开发)
认识apicloud
开发工具讲解
端API
API对象
设备访问
功能扩展
界面布局
导航菜单
小程序模块
云服务对接
4. 云API
数据云API
统计云API
推送云API
云API SDK
5. 小程序模块使用
三、常用框架使用篇
iview (vue框架)
element ui (vue框架)
echarts (百度图标库)
阿里巴巴开源图标使用
Sass学习
Swiper学习
zoom.js 学习
四、综合项目实战
教务管理系统(node+express+mysql)实现
思维导图
扩展学习部分
参考资料:前端学习路线,如何学习前端
使用npm常见的报错处理
(1)更换npm为淘宝的源(淘宝镜像)
npm install -g cnpm --registry=
(2)项目运行的时候;8080端口不要被被占用;因为一个8080端口只能用于一个地方;
(3)报错----ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' C:\Users\?
想要作为引用关系的js组件文件不要随便放到一个di
(4)在使用Ant Design组件库的时候st文件里面;一定要放到component文件夹中;
import { Form, Input, Select, Checkbox, DatePicker, Col, Radio, Button, Modal, message } from 'antd'
const FormItem = Form.Item
如上面的import里面并不需要加载Form.Item组件;只需要加载Form即可;
(5)如果要引入包中的某个文件;可以直接使用相对路径如
'antd/dist/antd.css'
(6) 在主文件main.js中
App组件用来书写路由;
Sider组件用来写Link即链接单页面;并且一般如 Link 组件后面不要加 :nbsp;
(7)import ReactDOM from 'react-dom'
(8) 动画的实现
第1步:现在文件头部加入这个 var ReactCSSTransitionGroup =require('react-addons-css-transition-group');
或 var ReactCSSTransitionGrop=React.addons.ReactCSSTransitionGrop;
第2步: 在要有动画的元素中加入此标签
transitionName代表动画的名称;
第3步:写css样式;
.example-enter ---》过程先变成这里的样式
.example-enter-active ---》最终变到这里的样式
.example-leave ---》这里的样式就是example-enter-active类的样式;所有这里一般不需要加样式;只要加transition即可;设置移除样式的时间;
.example-leave-active ---》移除元素的过程变成这个样式
.example-enter {
opacity: 0;
font-size: 32px;
color:red;
transition: all 1s ease-in;
}
.example-enter.example-enter-active {
opacity: 1;
font-size: 12px;
}
.example-leave {
transition: all 1s ease-in;
color:red;
}
.example-leave.example-leave-active {
font-size: 32px;
opacity: 0;
color:red;
}
(9)获取数组;操作数组
var bvaue="sdf";
1:往数组中添加元素
1:var newItems = this.state.items;
newItems.push(bvaue); this.state.item----[1,2,3,4];;newItems---arr对象;
2:var newItems = this.state.items.push(bvaue);----》这里拿到的是length值(错误做法);
2:删除数组中的元素
var newItems = this.state.items;
newItems.splice(i, 1);
this.setState({items: newItems});
(3)such file ----------找不到这样或那样的文件;在编辑器从新选择文件夹里面最里面的项目文件
npm i node_module -save-dev自动更新devDependencies字段值(开发依赖包)
* npm i node_module -save自动更新dependencies字段值(发布依赖包)
*
如何评价 CSS Modules
CSS 模块化重要的是要解决好两个问题:CSS 样式的导入和导出。灵活按需导入以便复用代码;导出时要能够隐藏内部作用域,以免造成全局污染。Sass/Less/PostCSS 等前仆后继试图解决 CSS 编程能力弱的问题,结果它们做的也确实优秀,但这并没有解决模块化最重要的问题。Facebook 工程师 Vjeux 首先抛出了 React 开发中遇到的一系列 CSS 相关问题。加上我个人的看法,总结如下:
全局污染
CSS 使用全局选择器机制来设置样式,优点是方便重写样式。缺点是所有的样式都是全局生效,样式可能被错误覆盖,因此产生了非常丑陋的 !important,甚至 inline !important 和复杂的选择器权重计数表,提高犯错概率和使用成本。Web Components 标准中的 Shadow DOM 能彻底解决这个问题,但它的做法有点极端,样式彻底局部化,造成外部无法重写样式,损失了灵活性。
命名混乱
由于全局污染的问题,多人协同开发时为了避免样式冲突,选择器越来越复杂,容易形成不同的命名风格,很难统一。样式变多后,命名将更加混乱。
依赖管理不彻底
组件应该相互独立,引入一个组件时,应该只引入它所需要的 CSS 样式。但现在的做法是除了要引入 JS,还要再引入它的 CSS,而且 Saas/Less 很难实现对每个组件都编译出单独的 CSS,引入所有模块的 CSS 又造成浪费。JS 的模块化已经非常成熟,如果能让 JS 来管理 CSS 依赖是很好的解决办法。Webpack 的 css-loader 提供了这种能力。
无法共享变量
复杂组件要使用 JS 和 CSS 来共同处理样式,就会造成有些变量在 JS 和 CSS 中冗余,Sass/PostCSS/CSS 等都不提供跨 JS 和 CSS 共享变量这种能力。
代码压缩不彻底
由于移动端网络的不确定性,现在对 CSS 压缩已经到了变态的程度。很多压缩工具为了节省一个字节会把 '16px' 转成 '1pc'。但对非常长的 class 名却无能为力,力没有用到刀刃上。
上面的问题如果只凭 CSS 自身是无法解决的,如果是通过 JS 来管理 CSS 就很好解决,因此 Vjuex 给出的解决方案是完全的 CSS in JS,但这相当于完全抛弃 CSS,在 JS 中以 Object 语法来写 CSS,估计刚看到的小伙伴都受惊了。直到出现了 CSS Modules。
请问谁有发送邮件的那个网页 HTML 源代码
163的很容易保存:点写信以后,在写信的标题附近空白处点鼠标右键,选择查看源文件,就会打开一个记事本,里面就是网页代码,从文件内容可以看见CSS代码文件是link href="" rel="stylesheet" type="text/css" id="cssGlobe",JS代码很多,163的代码的前面部分如下:
html xmlns=""
head
title网易电子邮箱/title
script language="javascript" src=""/script
script language="javascript" src=""/script
script language="javascript"var style= '21';var uid = '134931@163.com';var sid = 'ZCNYFPVKCrOsHwiKRWKKoVxaZzKKPxua';var contentURL = "readhtml.jsp?ssid=L%2ffJIM1fCEcjz7AdjHYrPVsp5POa3TQPSlvidcrLLkY%3d";var host = location.hostname;var searchid = "false";var domain = "163.com";var limitMessageCount = "999999999";var attrs = { common:{ sid : sid, uid : uid, cosid : "96", now : 1238213857743, style : style }, user:{'refuselist':'','safelist':'','addo':0,'afterdel':1,'aftersend_saveaddr':0,'app_city':null,'autosavedraft':1,'birthday':null,'city':'','clearinterval':0,'displaysender':0,'gender':'0','helptips':'00000101','huodong_option':'00000110','junkfilter':null,'junkfriend':1,'junkpic':0,'junkrefuse':1,'keepspamdays':-1,'maxlist':100,'mms_enabled':0,'nick_name':'','ntes_defaultsender':null,'op_readreceipt':0,'replyf':0,'save_sent':1,'showmusicbar':0,'style':21,'true_name':'阳光'}, cos:{'pref_quota':999999999,'perm_func_netfolder':false,'perm_func_address_book':true,'perm_func_schedule_send':true,'perm_func_antivirus':true,'perm_mail_webmail':true,'perm_mail_pop':true,'perm_mail_smtp':true,'perm_mail_imap':false,'perm_mail_filter':true,'perm_webmail_sendmail':true,'perm_webmail_html_editor':true,'perm_webmail_signature':true,'pref_webmail_max_signatures':10,'perm_webmail_pop_agent':true,'perm_webmail_mail_sorting':true,'perm_webmail_mail_get_rfc':true,'perm_webmail_disp_pref':true,'perm_webmail_mail_search':true,'pref_smtp_max_num_rcpts':20,'pref_smtp_max_send_mail_size':28672,'pref_alias_num':3,'perm_mail_sms_notify':true,'perm_smtp_auth_disabled':false,'perm_mail_autoreply':true,'perm_mail_autoforward':true,'perm_ssl_pop':false,'perm_ssl_smtp':false,'perm_ssl_imap':false,'perm_ssl_http':false,'perm_filter_anti_spam':true,'pref_antivirus_engine':'','pref_smtp_max_recv_mail_size':28672,'pref_smtp_max_mail_count':999999999,'pref_webmail_style':'0=10=20=30=40=50=60=70=80=90=100=110=120=130=140=150=160=170=180=190=200=210=220=230=240=250=260=270=280=290=300=310=320=330=340=350=0','perm_webmail_voicemail':false,'perm_webmail_videomail':false,'pref_netfolder_quota':10,'pref_netfolder_max_file_size':10240,'pref_netfolder_max_file_count':10000,'pref_flow_limit':'nf:560,nfrcv:476,nfsnd:364,smtp:400,web:500,webrcv:400,websnd:300,pop:250,c_pop:350','perm_share':false,'perm_advanced_imaging':true,'pref_package_download':1,'pref_webmail_faces':'@all','perm_mail_fulltext_search':true,'perm_ssl':true,'perm_webmail_mmmail':true,'pref_mail_archive_save_days':0,'pref_max_folder_nest_level':5,'pref_mail_folders':100,'pref_mail_rules':100,'pref_pab_contacts':2000,'pref_pop_agent_accounts':8,'pref_upload_size':-1,'pref_webmail_risky_suffix':''}};var fixAttrs = {afterdel:1,replyf:0,addo:0,displaysender:0,maxlist:20};for(var a in fixAttrs){ if(isNaN(attrs.user[a])){ attrs.user[a] = fixAttrs[a]; }}if(!attrs.user.ntes_defaultsender){ attrs.user.ntes_defaultsender = uid;}/scriptscript language="javascript" var gSenders = {'audited':[],'unaudited':[]}; var gPopAccounts = []; var gAlias = []; var gFolders = [{'id':1,'name':'收件箱','flags':{'system':true},'stats':{'messageCount':1749,'messageSize':1050661745,'unreadMessageCount':1481,'unreadMessageSize':905264326,'threadCount':0,'unreadThreadCount':0}},{'id':2,'name':'草稿箱','flags':{'system':true},'stats':{'messageCount':0,'messageSize':0,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}},{'id':3,'name':'已发送','flags':{'system':true},'stats':{'messageCount':44,'messageSize':40795286,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}},{'id':4,'name':'已删除','flags':{'system':true},'stats':{'messageCount':0,'messageSize':0,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}},{'id':5,'name':'垃圾邮件','flags':{'system':true},'stats':{'messageCount':0,'messageSize':0,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}},{'id':6,'name':'病毒文件夹','flags':{'system':true},'stats':{'messageCount':0,'messageSize':0,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}},{'id':7,'name':'广告邮件','flags':{'system':true},'stats':{'messageCount':0,'messageSize':0,'unreadMessageCount':0,'unreadMessageSize':0,'threadCount':0,'unreadThreadCount':0}}];/scriptlink href="" rel="stylesheet" type="text/css" id="cssGlobe"script language="javascript" var gLoginTime = new Date(); var gCurrentCss = "", gCurrentPath = "", gCurrentStyle = null; var gIsDebug = false; var gConfigUrl = "urlconfig.xml"; var gCacheJsPath = ""; function fLoadStyle(){ var styles = ["", "/a/h/js3/"]; gCurrentPath = styles[1]; var cssFile = { "vip.163.com" : "163_purple_s.css", "163.com" : "163_blue_s.css", "126.com" : "126_green_s.css", "188.com" : "188_gold_s.css", "yeah.net" : "yeah_blue_s.css" }; for(c in cssFile){ if(new RegExp(c).test(location.href)){ styles[0] += cssFile[c]; break; } } gCurrentCss = styles[0]; gCurrentStyle = styles; top.gCurrentCss = gCurrentCss; top.gCurrentStyle = gCurrentStyle; var sCss = 'link href="'+ gCurrentCss +'" rel="stylesheet" type="text/css" id="cssStyle" /'; if(document.domain.indexOf("163.com")-1){ sCss += 'link href="" rel="stylesheet" type="text/css"link href="" rel="stylesheet" type="text/css"STYLE.gTopMus .usrMsg{top:10px}.gTopMus .tLink{top:10px}/STYLE'; } document.write(sCss); }; var sTopSearchid = searchid; var sTxtKeyValue = "搜索邮件"; if(sTopSearchid sTopSearchid=="true"){ sTxtKeyValue = "支持邮件全文搜索"; } fLoadStyle(); /scriptstyle@media all {IE\:CLIENTCAPS {behavior:url(#default#clientCaps)}}.userData{behavior:url(#default#userdata)}div.SD_tipsbg{background-image:url()}/style
/head
body class="gb" lang="zh" style="overflow-y:auto"
div class="gTop gTopMus" id="dvTop"a href="" target="_blank" id="lnkHome"img src="" alt="163邮箱" class="gLogo" border="0" id="imgLogo" //adiv class="usrMsg"b id="bUid"134931@163.com/b [ a href="javascript:fGoto()" onclick="fGoto('MM.getModule(\'welcome\')')"邮箱首页/a,a href="javascript:fGoto()" onclick="fGoto('CC.goOutlink(\';url=\');')"密码保护/a,a href="javascript:fGoto()" id="lnkexit" onclick="fGoto('CC.logout()')"退出/a ] span id="ad1"/spanspan/span/divdiv class="tLink"a href="javascript:fGoto()" onclick="fGoto('MM.getModule(\'option\');')" 设置/a | a href="javascript:fGoto()" id="lnkhelp" target="_blank"帮助/a | a href="/a/service/index.jsp?sid=ZCNYFPVKCrOsHwiKRWKKoVxaZzKKPxua" target="_blank"自助查询/a/div!--页面总导航栏--div class="gNav"ul id="ulTab"lia href="javascript:fGoto();" class="on" href="javascript:fGoto()" onclick="fGoto('MM.getModule(\'welcome\')')"电子邮件/a/lilia href="javascript:fGoto()" onclick="fGoto('MM.getModule(\'address\');')"通讯录/a/lilia href="javascript:fGoto()" onclick="fGoto('CC.getServiceLink(\'assist\')')"百宝箱/a/lili id="liNetFolder"a href="javascript:fGoto()" onclick="fGoto('CC.goNetFolder();')"网易网盘/a/li/ul/divdiv class="gSrh" id="set_a_line_area2"input type="text" class="gSipt fLe" id="txtKey" style="color:#aaaaaa" onfocus="this.className='gSipt fLe bgcolor13'" MAXLENGTH="100" onkeyup="if(event.keyCode==13){fGoto('CC.searchMailByTop();');this.blur()}" onblur="this.className='gSipt fLe';if(this.value=='')this.value=sTxtKeyValue;" onclick="if(this.value==sTxtKeyValue)this.value=''" /a href="javascript:fGoto()" class="srhBtn fLe" onclick="$('txtKey').onclick();fGoto('CC.searchMailByTop();');$('txtKey').onblur();" title="搜索"b搜索/b/aa href="javascript:fGoto();" class="AdsrhBtn fLe" onclick="fGoto('MM.getModule(\'searchmail\');')" title="进入高级搜索"b高级搜索/b/a/divspan id="spnTabSplit"b id="sl1" class="spl" style="display:none"/bb id="sl2" class="spl"/bb id="sl3" class="spl"/b/span/divdiv class="gLoading" style="top:34px; right:10px; z-index:60; display:none;" id="tbMsg"img src="" align="absmiddle"/ span id="spnMsg"数据加载中,请稍候.../span/diviframe src="about:blank" id="ifrHtmlEditor" name="ifrHtmlEditor" style="display:none"/iframeIE:CLIENTCAPS ID="oClientCaps" /span id="oUserData" class="userData" style="display:none"/spantable class="gMain"tr class="gMtr"td class="gLe"div class="gMbtn" id="set_a_line_area3"a href="javascript:fGoto();" class="gCmBtn" title="收信" onclick="fGoto('CC.goInbox();')"b class="hide"收信/b/aa href="javascript:fGoto();" class="gWmBtn" title="写信" onclick="fGoto('CC.compose();')"b class="hide"写信/b/a/divdiv class="gFd"h3 class="gfTit"a href="javascript:fGoto();" class="clsFd bgF1" title="折叠" id="lnkFolderToggle" onclick="fGoto('CC.toggleTree($(\'lnkFolderToggle\'), \'ulFolders\')')"/aa href="javascript:fGoto();" class="gfName" onclick="fGoto('MM.getModule(\'folderMain\')')"文件夹/aa href="javascript:fGoto();" class="addFd bgF1" title="添加文件夹" onclick="fGoto('MM.folderMain.add()')"/a/h3ul class="gFdBdy" id="ulFolders" onmouseover="try{MM.folder.handleDrag();}catch(exp){}"/ul/divdiv class="gFd"h3 class="gfTit"a href="javascript:fGoto();" class="clsFd bgF1" id="lnkServiceToggle" title="折叠" onclick="fGoto('CC.toggleTree($(\'lnkServiceToggle\'), \'ulService\')')"/aa href="javascript:fGoto();" class="gfName" onclick="fGoto('CC.goOutlink(\'/a/h/js3/\'+GE.dm+\'service.htm\')')"邮箱服务/a/h3ul class="gSevBdy" id="ulService"SCRIPT LANGUAGE="JavaScript"var gServiceUrl = ' sms163|?\nupgrade163|\nmyresume|;mailname=$user$sid=$sid$\n myblog163|;username=$user$email=$uid$host=$host$\nmybill|;uid=$uid$sid=$sid$\naddress|MM.getModule("address");\nxport|MM.address.gotoXport();\npop3|MM.getModule("pop3")\ncards|;useremail=$uid$username=$user$sid=$sid$host=$host$\nrss|;username=$uid$\nvip163|\nstamp|;sid=$sid$action=getAlbum\ninvite|;host=$host$\nassist|\necard|;useremail=$uid$username=$user$sid=$sid$host=$host$\nmail188|;domain=$dm$\nmyblog|;username=$uid$email=$uid$host=$host$\n';var gUrls = ' 6|\n11|\n12|\n20|\n21|\n22|;username=$user$\n23|\n28|;p=0l=50\n29|\n31|\n35|\n55|\n56|\n57|\n58|\n86|\n 33|;uid=$uid$url=;act=get\n40|;strCmjsLog=\n46|;sid=$sid$origin=$host$username=$user$\n51|\n53|;sid=$sid$host=$host$\n54|;sid=$sid$method=getStatus\n84|;host=$host$\n85|\n';function fTrim(s){ return s.replace(/(^\s*)|(\s*$)/g, "");}var aServiceUrl = gServiceUrl.split("\n");var aUrls = gUrls.split("\n");var gServiceUrlObj = {};var gUrlsObj = {};for(var i=0;iaServiceUrl.length;i++){ var v = aServiceUrl[i]; if(v != ""){ var a = fTrim(v).split("|"); if(a.length == 2){ gServiceUrlObj[a[0]] = a[1]; } }}for(var i=0;iaUrls.length;i++){ var v = aUrls[i]; if(v != ""){ var a = fTrim(v).split("|"); if(a.length == 2){ gUrlsObj[a[0]] = a[1]; } }}/SCRIPTLI id=myblog163A class=gfNm onfocus=this.blur(); onclick="fGoto('CC.getServiceLink(\'myblog163\');')" href="javascript:fGoto();"记事本/A/LILI id=stampA class=gfNm onfocus=this.blur(); onclick="fGoto('CC.getServiceLink(\'stamp\');')" href="javascript:fGoto();"集邮中心/A/LILI id=sms163A style="FONT-WEIGHT: bold" class=gfNm onfocus=this.blur(); onclick="fGoto('CC.getServiceLink(\'sms163\');')" href="javascript:fGoto();"随身邮/A/LILI id=upgrade163A class=gfNm onfocus=this.blur(); target=_blank href="#" onclick="this.href=gServiceUrlObj['upgrade163']"新邮箱伴侣/A/LI!--LI id=vip163A class=gfNm onfocus=this.blur(); target=_blank href="#" onclick="this.href=gServiceUrlObj['vip163']"升级到VIP/A/LI--/ul/div/tdtd class="gRi" id="divMain"div id="divwelcome"div class="WelPages"div class="wel_Topbar" id="divWelcomeHead"div class="wel_user"b class="wel_hi_user"span id="spnWelcomeGreet"中午好/span,杨光彬/bdiv class="w_jifen"div id="divWelcomeJiFen" a href="javascript:fGoto()" onclick="fGoto('CC.getJifen()')" title="点击查看积分"点击查看积分/a/div/div/divdiv class="wel_inbox"b class="icos iconinbox"/bdiv class="fLe"您有 a style="text-decoration:none" href="javascript:fGoto()" onclick="fGoto('MM.folder.sortSearch(1,1)');return false"span id="spnWelcomeNew" class="Notice_Nu"1481/span/a 封 a href="javascript:fGoto()" onclick="fGoto('MM.folder.sortSearch(1,1)');return false"未读邮件/a,a href="javascript:fGoto()" onclick=fGoto("MM.getModule('folderMain')")管理文件夹/a/diviframe src=";sid=ZCNYFPVKCrOsHwiKRWKKoVxaZzKKPxuaaction=new" frameborder="0" allowtransparency="true" scrolling="no" class="ifm_mailblog"/iframe/divdiv class="wel_Tr"div class="wel_rl_nolim" title="无限容量空间:已用1.02G"/divdiv id="divWelTianQi"iframe class="wel_i_weather" frameborder="0" allowtransparency="true" scrolling="no" src=""/iframe/div/div/divdiv class="wel_Main_Main" id="divWelcomeBody"div class="wel_Main"div class="wel_Mtab"div class="wel_Mtab_head" id="divWelcomeTab"scriptfAdPageWrite(fAdWelcomeTabsInfo)/script/divdiv class="wel_i_bg" id="divWelcomeContent"spandiv class="weltab_main_f"div class="img1"scriptfAdPageWrite(fAdWelcomeRandom(fAdWelcomeServiceLogo))/script/divdiv class="txt1"scriptfAdPageWrite(fAdWelcomeRandom(fAdWelcomeServiceText))/script/div/divdiv class="wel_if_mail" style="text-align:center"div class="wel_tj"div class="wel_tj_tit"scriptt=fAdWelcomeServiceLink();fAdPageWrite(t.title)/script/divul class="wel_tj_ul"liscriptfAdPageWrite(t.left1)/script/liliscriptfAdPageWrite(fAdWelcomeRandom(fAdWelcomeServiceLinkR1))/script/liliscriptfAdPageWrite(t.left2)/script/liliscriptfAdPageWrite(fAdWelcomeRandom(fAdWelcomeServiceLinkR2))/script/liliscriptfAdPageWrite(t.left3)/script/liliscriptfAdPageWrite(fAdWelcomeRandom(fAdWelcomeServiceLinkR3))/script/li/ul/div/divdiv class="clear" style="height:1px"/div/span/div/divdiv class="wel_Ma300x260"scriptfAdPageWrite(fAdWelcomeRandom(fAdWelcome300x260))/script/divdiv class="wel_Ma460x110"div class="wel_Ma460x110M"div class="wel_gjcont
怎么配置lighttpd的VirtualHost
############ Options you really have to take care of ####################
## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
"mod_cache", # add
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
# "mod_fastcgi",
"mod_proxy",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
"mod_compress",
"mod_mem_cache", #add
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
"mod_secdownload",
"mod_flv_streaming",#add
# "mod_rrdtool",
"mod_accesslog" )
######------------------- cjj add 2008.8.15 b ----------------------######
# tarting with lighttpd 1.4.0 three default modules are loaded automatically:
# * mod_indexfile
# * mod_dirlisting
# * mod_staticfile
######------------------------end-----------------------------------######
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/srv/www/"
## where to send error-messages to
server.errorlog = "/var/log/lighttpd/error.log"
# files to check for if .../ is requested
index-file.names = ( "index.jsp", "index.html",
"index.htm", "default.htm" )
## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X
######--------------------- cjj 2008.8.15 b -----------------------######
# 事件处理
#
#对于linux kernel 2.6来说,没有别的可说 加上这一句足矣
server.event-handler = "linux-sysepoll"
######------------------------end-----------------------------------######
######------------------cjj add 2008-8.15 b ------------------------######
##为什么file handles 要多于 connections?
##The other file handles are used for fastcgi and/or files,所以我们设置如下:
server.max-fds = 4096
server.max-connections = 2048 #最大连接数设置,默认1024
#max-connection=mad-fds/2(mybe /3)
######------------------------end-----------------------------------######
######------------------ cjj add 2008.8.15 b -----------------------######
###defaults:
##server.max-keep-alive-requests = 16
##server.max-keep-alive-idle = 5
##server.max-read-idle = 60
##server.max-write-idle = 360
###
server.max-keep-alive-requests = 0
server.network-backend = "linux-sendfile"
######------------------------end-----------------------------------######
# mimetype mapping
mimetype.assign = (
".pdf" = "application/pdf",
".sig" = "application/pgp-signature",
".spl" = "application/futuresplash",
".class" = "application/octet-stream",
".ps" = "application/postscript",
".torrent" = "application/x-bittorrent",
".dvi" = "application/x-dvi",
".gz" = "application/x-gzip",
".pac" = "application/x-ns-proxy-autoconfig",
".swf" = "application/x-shockwave-flash",
".tar.gz" = "application/x-tgz",
".tgz" = "application/x-tgz",
".tar" = "application/x-tar",
".zip" = "application/zip",
".mp3" = "audio/mpeg",
".m3u" = "audio/x-mpegurl",
".wma" = "audio/x-ms-wma",
".wax" = "audio/x-ms-wax",
".ogg" = "application/ogg",
".wav" = "audio/x-wav",
".gif" = "image/gif",
".jar" = "application/x-java-archive",
".jpg" = "image/jpeg",
".jpeg" = "image/jpeg",
".png" = "image/png",
".xbm" = "image/x-xbitmap",
".xpm" = "image/x-xpixmap",
".xwd" = "image/x-xwindowdump",
".css" = "text/css",
".html" = "text/html",
".htm" = "text/html",
".js" = "text/javascript",
".asc" = "text/plain",
".c" = "text/plain",
".cpp" = "text/plain",
".log" = "text/plain",
".conf" = "text/plain",
".text" = "text/plain",
".txt" = "text/plain",
".dtd" = "text/xml",
".xml" = "text/xml",
".mpeg" = "video/mpeg",
".mpg" = "video/mpeg",
".mov" = "video/quicktime",
".qt" = "video/quicktime",
".avi" = "video/x-msvideo",
".asf" = "video/x-ms-asf",
".asx" = "video/x-ms-asf",
".wmv" = "video/x-ms-wmv",
".bz2" = "application/x-bzip",
".tbz" = "application/x-bzip-compressed-tar",
".tar.bz2" = "application/x-bzip-compressed-tar",
# default mime type
"" = "application/octet-stream",
)
# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr = "enable"
## send a different Server: header
## be nice and keep it at lighttpd
# server.tag = "lighttpd"
#### accesslog module
accesslog.filename = "/var/log/lighttpd/access.log"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
server.port = 80
## bind to localhost (default: all interfaces)
server.bind = "192.168.0.128"
## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"
## to help the rc.scripts
#server.pid-file = "/var/run/lighttpd.pid"
###### virtual hosts
##
## If you want name-based virtual hosting add the next three settings and load
## mod_simple_vhost
##
## document-root =
## virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
## virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/srv/www/vhosts/"
#simple-vhost.default-host = ""
#simple-vhost.document-root = "/htdocs/"
######------------------- cjj 2008.8.15 b ------------------------#######
## 错误转向统一处理
## Format: errorfile-prefixstatus-code.html
## - ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/usr/share/lighttpd/errors/status-"
#server.errorfile-prefix = "/srv/www/errors/status-"
#create static pages for your error handling in directory /srv/www/yoursite/htdocs/errors.
#Based on the above entry you must name your files status-(status-code).html 如:404.html,500.html
server.errorfile-prefix = "/srv/www/-"
######------------------------end-----------------------------------######
## virtual directory listings
dir-listing.activate = "enable" #允许列表,一般不允许,default:disable
dir-listing.encoding = "utf-8" #add 编码,不加没啥影响,因为列表一般是禁用的,default:ISO-8859-1,
######
####### If the URL is like ^/download/ then enable/disable dir-listing
$HTTP["url"] =~ "^/download/" {
dir-listing.activate = "enable"
}
######------------------cjj add 2008.8.15---------------------------######
#lighttpd can utilize FAM/Gamin to cache stat call.
#possible values are: disable, simple or fam.
server.stat-cache-engine = "simple"
#defaults to /var/tmp as we assume it is a local harddisk
#server.upload-dirs = "/var/tmp"
#if you have multiple lighttpd servers serving static content then you should use
#Otherwise you will generate lesser number of 304 responses
etag.use-inode = "disable"
#default "enable"
######------------------------end-----------------------------------######
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found = "enable"
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"
## change uid to uid (default: don't care)
#server.username = "wwwrun"
## change uid to uid (default: don't care)
#server.groupname = "wwwrun"
######--------------------------- cjj add 2008.8.18 c -----------------------------######
####cache module
cache.support-queries = "enable" #ignore '?' in url
cache.bases = ("/var/cache/lighttpd/data1","/var/cache/lighttpd/data2") #write cached files in /data/cache directory
cache.enable="enable"
#$HTTP["host"]=="video.example.org"{cache.enable=enable}
cache.refresh-pattern = (
"/$" = "5 update-on-refresh no-expire-header", # update homepage every 5 minutes and on refresh requests without setting expire headers
"\.(?i)(flv)$" = "0 fetchall-for-range-request flv-streaming", # to work with mod_flv_streaming for flv files
"\.(?i)(js|css|xml)$" = "240", # update js/css/xml every 4 hours and on refresh requests
"\.(?i)(htm|html|shtml)$" = "30", # update html/htm/shtml every 30 minutes and on refresh requests
"\.(?i)(jpg|bmp|jpeg|gif|png)$" = "2880", # update graphics files every 2 days
"\.(?i)(rar|zip|wmv|avi|mp3|ape|rm|mpeg|mpg|wma|asf|rmvb|flv)$" = "0 fetchall-for-range-request", # cache media file forever
"." = "30 update-on-refresh" # default to update every 30 minutes and on refresh requests
)
#mod_proxy_core setting, config your backend servers here
proxy-core.backends = ( "192.168.0.128:80", "192.168.0.128:80")
proxy-core.balancer = "round-robin" # or "sqf" or "carp"
proxy-core.protocol = "http"
#it's important to enable proxy-core.worked-with-modcache,
# or mod_proxy_core will not cooperate with mod-cache
proxy-core.worked-with-modcache = "enable"
######----------------------------------end-------------------------------------------######
########-------------------------------cjj 2008.8.15 ---------------------------------######
#### compress module
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html","text/javascript","text/css","text/xml")
######-------------------------------------end----------------------------------------######
######----------------------------------cjj add 2008.8.18-----------------------------######
#### mem_cache module
mem-cache.filetypes=("application/x-javascript", "text/css", "text/html", "text/javascript")
##maxium memory in Mbytes mod-mem-cache can use. default 512 Megabytes
mem-cache.max-memory = 1024
##maxium file size in Kbytes of single file to cache in memory. Default: 512 (means 512 ''Kilobytes'').
mem-cache.max-file-size = 1024
##number of cached memory items to remove when used memory reached maxmemory by LRU algorthim.Default 200
mem-cache.lru-remove-count = 1000
##memory cache's expire time in minutes.Default: 0 (means to check file update for every request)
mem-cache.expire-time = 1440 # 1 day
######-------------------------------------end----------------------------------------######
######----------------------------------cjj add 2008.8.18-----------------------------######
#### proxy module
## read proxy.txt for more info 使用proxy,cache模块才起作用
$HTTP["url"]=~".jsp|.do|/"{
proxy.balance="fair"
proxy.server=("/" =(
("host" = "192.168.0.3")
#("host" = "122.200.97.146")
)
)
}
##default:
#proxy.server = ( ".jsp" =
# ( "localhost" =
# (
# "host" = "192.168.0.128",
# "port" = 80
# )
# )
# )
##均衡 example
#$HTTP["host"] == "local." {
# proxy.balance = "hash"
# proxy.server = ( "/" = (
# ( "host" = "192.168.0.125" ),
# ( "host" = "192.168.0.132" )
# )
# )
# }
######-------------------------------------end----------------------------------------######
######----------------------------------cjj add 2008.8.19 b---------------------------######
## mod_secdownload
##URL has to have the format:uri-prefix/token/timestamp-in-hex/rel-path
##token=MD5(secret.filename.time)
secdownload.secret = "cjj"
secdownload.document-root = "/srv/www/download/"
secdownload.uri-prefix = "/dl/" #default : /
secdownload.timeout = 0 #default : 60(s),0好像是无限需要进一步验证
######-------------------------------------end----------------------------------------######