免费视频播放器

Flowplayer – Flash Video Player for the Web

Video LightBox JS

JW Player

Free flash flv/mp4 player

SublimeVideo – HTML5 Video Player

高级视频播放器

HTML5 Video Player

Vplayer – Video player with Gallery

Tejas – Premium HTML5 Video Player

JQuery Html5 Video Player

HTML5 Video Gallery with Live Playlist

MediaBox – jQuery Plugin for Audio & Video

Video Player Reflection Multi Skin Local / YouTube

Dynamic Flash Video Player (.flv & h.264)

Very Versatile Video Player (h.264, and flv)

Ultra XML Video Player

Clean White Video Player

Xml video player

AS3 Video Player

Smart Video Player

Fullscreen Video Player 03 AS2

New Video Player. Dynamic Movie Player FlashVars.

via designmodo

更多关于FlowPlayer的详细信息,或者下载地址请点这里

本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区
转载请注明:文章转载自:开源中国社区 [http://www.oschina.net]
本文标题:20+ 个免费和高级的 Web 视频播放器
本文地址:http://www.oschina.net/news/23953/video-players
posted @ 2011-12-16 14:23 小马歌 阅读(359) | 评论 (0)编辑 收藏
 

如果你正在使用MySQL,你应该了解下一个版本将会有么新特性,例如更好的伸缩性、高性能以及灵活性的提升之类的。

MySQL的下一个版本是5.6,这里列出了该版本的5大新特性:

优化器的改进

MySQL Optimizer团队做了大量的工作为了不断的提升SQL查询的效率,主要体现在索引条件pushdown以及多范围的读数据。索引条件的pushdown的意思是将WHERE条件语句移到存储引擎中去处理,可降低过载;而多范围读意味着当查询使用第二索引时,将进行磁盘块的排序。

InnoDB改进

MySQL InnoDB存储引擎团队主要提供了NoSQL的访问接口,可通过Memcached的API直接访问InnoDB的表。

使用memcached API直接访问NoSQL

此举可大幅提升Web应用中的数据访问性能,适合一些简单的查询。

更好的复制

MySQL复制模块团队主要改进了数据完整性和可用性以及性能方面的提升。

Performance Schema

Performance Schema是在5.5版本中引入的,5.6做了改进,提供新功能包括:表锁、表I/O以及表锁等待。

英文出自:creativedev

译文出自:oschina

posted @ 2011-12-16 14:20 小马歌 阅读(169) | 评论 (0)编辑 收藏
 
from:http://forums.cacti.net/about26458.html

Scripts and templates for nginx. 

Nginx - http://nginx.net/ 

Provide graphing nginx clients statistics (active, reading, writing, waiting) and nginx socket statistics (accepts, handled, requests). It's a formal devision used only for graphs usability. 

For use do next steps: 

1. Enable nginx http_stub_status_module at configure stage (if requared). 

2. Enable stub status. Add to nginx.conf (in any server context): 

Code:
location /nginx_status {
   stub_status on;
   # disable access_log if requared
   access_log   off;
   #allow XX.YY.AA.ZZ;
   #allow YY.ZZ.JJ.CC;
   #deny all;
}


Restart nginx.

3.

Code:
cp get_nginx_clients_status.pl <path_cacti>/scripts/
cp get_nginx_socket_status.pl <path_cacti>/scripts/
chmod 0755 <path_cacti>/scripts/get_nginx_socket_status.pl
chmod 0755 <path_cacti>/scripts/get_nginx_clients_status.pl


4. Check that it's work. Run

Code:
get_nginx_clients_status.pl http://nginx.server.tld/nginx_status


and see that returned the same string:

Code:
nginx_accepts:113869 nginx_handled:113869 nginx_requests:122594


5. Import to cacti cacti_graph_template_nginx_clients_stat.xml and cacti_graph_template_nginx_sockets_stat.xml. 

6. Add nginx graphs to your hosts. 

P.S. Sorry for my english :)


Attachments:
 cacti-nginx.tar.gz [5.15 KiB] 
Downloaded 6371 times 
posted @ 2011-12-15 16:37 小马歌 阅读(667) | 评论 (0)编辑 收藏
 
转自:http://tech.it168.com/a2009/0203/264/000000264249.shtml


【IT168技术分析评论】 
最近简单的使用了目前在国内用的比较多的几个主流国外PHP框架(不包括国内框架),大致对这些框架有个直观上的感受,简单分享一下,对于哪些做框架选型的时候,权当一个参考。

主要参考的框架包括:CodeIgniter、CakePHP、ZendFramework、Symfony

说明:我对很多框架也没有认真使用,只是简单试用了一下,可能很多看法不成熟或者是错误的,请大家指正,一起成长。

【 CodeIgniter 】

官方网站:http://codeigniter.com

中文网站:http://codeigniter.org.cn

中文手册:http://codeigniter.org.cn/user_guide

视频教程:http://codeigniter.org.cn/tutorials

测试版本:CodeIgniter_1.6.1

优点:

1. 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能

2. 快速简洁,代码不多,执行性能高,框架简单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用

缺点:

1. 把Model层简单的理解为数据库操作

2. 框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要

评价:

总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的 library 也还不错,简洁高效。

【 CakePHP 】

官方网站:http://www.cakephp.org

中文手册:http://www.1x3x.net/cakephp

视频教程:http://search.you.video.sina.com.cn/s?key=cakephp

测试版本:cake_1.1.19.6305

优点:

1. CakePHP是最类似于RoR的框架,包括设计方式,数据库操作的Active Record方式;设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错;数据库层的 hasOne, hasMany 功能很强大,对于复杂业务处理比较合适;路由功能,配置功能还不错;自动构建脚手架(scaffold)很强大;适合中型应用;基本实现过了MVC每一层;具有自动操作命令行脚本功能;

2. 文档比较全,在国内推广的比较成功,大部分都知道CakePHP,学习成本中等

缺点:

1. CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力

2. CakePHP的cache功能略显薄弱,配置功能稍嫌弱;CakePHP不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点

评价:

总体来说CakePHP框架代表了PHP框架很重要的一个时代和代表,并且目前发挥着很重要的作用,不少自己写的框架都模仿了CakePHP的方式,是个里程碑式的产品;CakePHP透露着RoR的敏捷开发方式和把数据库操作认为是唯一Model的设计思想,作为开发快速应用和原型是绝好的工具;同样,用来做Web2.0网站的开发框架,也是值得选择的。

【 Zend Framework 】

官方网站:http://framework.zend.com

中文手册:http://www.phpeye.com/zf

视频教程:http://framework.zend.com/docs/screencasts

测试版本:ZendFramework-1.5.0

优点:

1. 官方出品,自带了非常多的 library,框架本身使用了很多设计模式来编写,架构上很优雅,执行效率中等;MVC设计中,比较简洁,具有路由功能,配置文件比较强大(能够处理 XML和php INI),各种 library 很强大,是所有PHP框架中各种功能最全面的,包括它不仅是一个框架,更是一个大类库(取代PEAR),这是它的主要特色;能够直观的支持除数据库操作之外的Model层(比 CodeIgniter 和 CakePHP 强),并且能够很轻易的使用Loader功能加载其他新增加的Class;Cache功能很强大,从前端Cache到后端Cache都支持,后端 Cache支持Memcache、APC、SQLite、文件等等方式;数据库操作功能很强大,支持各种驱动(适配器)

2. 文档很全,在国内社区很成熟,并且目前不少Web 2.0网站在使用,学习成本中等

缺点:

1. MVC功能完成比较弱,View层简单实现(跟没实现一样),无法很强大的控制前端页面

2. 没有自动化脚本,创建一个应用,包括入口文件,全部必须自己手工构建,入门成本高

3. Zend Framework 作为一个中型应用框架问题不大,也能够勉强作为大型应用的框架,但是作为一个很成熟的大型PHP框架来说,还需要一些努力

评价:

作为官方出品的框架,Zend Framework的野心是可以预见的,想把其他框架挤走,同时封装很多强大的类库,能够提供一站式的框架服务,并且他们的开发团队很强大,完全足够有能力开发很强大的产品出来,所以基本可以确定的是Zend Framework前途无量,如果花费更多的时间去完善框架。同样的,Zend Framework架构本身也是比较优雅的,说明Zend官方是有很多高手的,设计理念上比较先进,虽然有一些功能实现的不够完善,比如View层,自动化脚本等等,这些都有赖于未来的升级。总体来说Zend Framework是最值得期待的框架,当然,你目前要投入你的项目中使用也是完全没问题的。

【 Symfony 】

官方网站:http://www.symfony-project.org

中文网站:http://symfony-project.cn

权威指南:http://www.symfony-project.org/book

学习参考:http://sf.thecodecentral.com

测试版本:symfony-1.0.13

优点:

1. Symfony 是我了解的PHP框架中功能最强大的,而且我使用时间比较长,但是很多功能还是没有挖掘出来;它完整实现了MVC三层,封装了所有东西,包括 $_POST,$_GET 数据,异常处理,调试功能,数据检测;包含强大的缓存功能,自动加载Class(这个功能很爽),强大的i18n国家化支持;具有很强大的view层操作,能够零碎的包含单个多个文件;非常强大的配置功能,使用yml配置能够控制所有框架和程序运行行为,强大到让人无语;能够很随意的定义各种自己的 class,并且symfony能够自动加载(auto load)这些class,能够在程序中随意调用;包含强大的多层级项目和应用管理:Project --> Application --> Module --> Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout;非常强大的命令行操作功能,包括建立项目、建立应用、建立模块、刷新缓存等等;

2. Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作的时候,不会出现问题,在Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码

缺点:

1. 数据库操作model采用了重量级的propel和creole,不过在我测试的版本中已经把他们移到了addon里,可用可不用

2. 缓存功能无法控制,每次开发调试总是缓存,需要执行 symfony cc, symfony rc 来清除和重建缓存;

3. 效率不是很高,特别是解析模板和读取配置文件的过程,花费时间不少;

4. 学习成本很高,并且国内没有成熟的社区和文档,连中文手册都没有,相应的要掌握所有功能,需要花费比较多的时间

评价:

Symfony绝对是企业级的框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。相应的如果使用Symfony的应该都是比较复杂的互联网项目,那么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造model层。

【 总评 】

以上数款框架,各有特色,而且都是开源项目,不过框架针对的项目不一样,一般来说 CodeIngiter 比较适合小型项目,CakePHP 和 Zend Framework 比较适合中型项目,Symfony 比较适合大型重量级项目,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无法确定你是否会随着需求的变化进行改变。

相对来说,Zend Framework 和 Symfony 应对变化的能力比较强,特别是能够随意定制 model 层的Class,能够非常方便增加自己业务或者数据处理类,我是个人比较推荐在中大型项目中使用的框架。CodeIngiter 和 CakePHP 在中小型项目中同样能够发挥重大作用,快速开发和原型构建,非常适合目标不清晰的原型项目的开发。了解一个框架最好的方式就是使用它,学习它最好的方式就是看视频。:-)

仁者见仁,智者见智,在项目挑选框架的时候,请先认真考察项目的需求和未来的变化,然后选择合适的框架,让项目开发速度和后期维护性得到一个合理的平衡,当然了,也许,自己写一个框架更适合。 :-)

泛泛的评价了几款框架,估计很多东西都没有说到点子上,大家就姑且看之,同样欢迎提出看法指正!
posted @ 2011-12-12 15:18 小马歌 阅读(526) | 评论 (0)编辑 收藏
 
使用 Nginx 提升网站访问速度 

http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/

刘 柄成 (javayou@gmail.com), 软件工程师, 广州市摩网信息技术有限公司 
简介: 本文主要介绍如何在 Linux 系统上安装高性能的 HTTP 服务器 —— Nginx、并在不改变原有网站结构的条件下用 Nginx 来提升网站的访问速度。
刘柄成一直使用 J2EE/J2ME 从事移动互联网方面的开发。DLOG4J 的作者,您可以通过 Java 自由人网站来跟他联系,网址是:http://www.javayou.com ,另外他的邮件地址是 javayou@gmail.com。

nginx怎么加expire头

http://blog.csdn.net/love__coder/archive/2010/09/02/5859820.aspx

     nginx怎么对网站的图片、js和css添加过期头呢?

     在nginx配置文件server配置下,添加如下配置:

  server {

 location ~* ^.+\.(jpg|jpeg|gif|png|bmp)$ {
        access_log /data/logs/image.log;
        root '/usr/opt/nginx/html/www1';
        expires 30d;
        break;
    }

 

    location ~* ^.+\.(js|css)?${
       access_log /data/logs/jsandcss.log;    
       root '/usr/opt/nginx/html/www1';
       expires 30d;
    }

    }

     keyword:nginx expire

 

Apache/Nginx Cache Last-Modified、Expires和Etag相关工作原理

http://www.yanghengfei.com/archives/524/

 

使用ETag和expires 调优web 服务器性能

正确使用Etag和Expires标识处理,可以使得页面更加有效被Cache。

在客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse Header),服务器端的返回状态会是200,格式类似如下:

HTTP/1.1 200 OK

Date: Tue, 03 Mar 2009 04:58:40 GMT

Content-Type: image/jpeg

Content-Length: 83185

Last-Modified: Mon, 22 Nov 2010 16:29:24 GMT

Cache-Control: max-age=2592000


Expires: Thu, 02 Apr 2009 05:14:08 GMT

Etag: "xok.la-961AA72-4CEA99B4415628″
客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应并记录相关记录属性标记文件没有发生改动,服务器端返回304,直接从缓存中读取:

HTTP/1.x 304 Not Modified

Date: Tue, 03 Mar 2009 05:03:56 GMT

Content-Type: image/jpeg

Content-Length: 83185

Last-Modified: Mon, 22 Nov 2010 16:29:24 GMT

Cache-Control: max-age=2592000

Expires: Thu, 02 Apr 2009 05:14:08 GMT

Etag: "xok.la-961AA72-4CEA99B4415628″
其中Last-Modified、Expires和Etag是标记页面缓存标识

一、Last-Modified、Expires和Etag相关工作原理

1、Last-Modified

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记 (Http Reponse Header)此文件在服务期端最后被修改的时间,格式类似这样:

Last-Modified: Mon, 22 Nov 2010 16:29:24 GMT
客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头(Http Request Header),询问该时间之后文件是否有被修改过:

If-Modified-Since: Mon, 22 Nov 2010 16:29:24 GMT
如果服务器端的资源没有变化,则自动返回 HTTP 304 (NotChanged.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类 似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

注:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,会认为是个非法请求

2、Etag工作原理

HTTP 协议规格说明定义ETag为”被请求变量的实体标记” (参见14.19)。简单点即服务器响应时给请求URL标记,并在HTTP响应头中将其传送到客户端,类似服务器端返回的格式:

Etag: "xok.la-961AA72-4CEA99B4415628″
客户端的查询更新格式是这样的:

If-None-Match: "xok.la-961AA72-4CEA99B4415628″
如果ETag没改变,则返回状态304。

即:在客户端发出请求 后,Http Reponse Header中包含 Etag: “xok.la-961AA72-4CEA99B4415628″

标识,等于告诉Client端,你拿到的这个的资源有表示 ID:xok.la-961AA72-4CEA99B4415628。当下次需要发Request索要同一个 URI的时候,浏览器同时发出一个If-None-Match报头( Http RequestHeader)此时包头中信息包含上次访问得到的Etag: “xok.la-961AA72-4CEA99B4415628″标识。

If-None-Match: "xok.la-961AA72-4CEA99B4415628"
,这样,Client端等于Cache了两份,服务器端就会比对2者的etag。如果If- None-Match为False,不返回200,返回304 (Not Modified) Response。

3、Expires

给出的 日期/时间后,被响应认为是过时。如Expires: Thu, 02 Apr 2009 05:14:08 GMT

需和Last-Modified结合使用。用于控制请求文件的有效时间,当请求数据在有效期内时客 户端浏览器从缓存请求数据而不是服务器端. 当缓存中数据失效或过期,才决定从服务器更新数据。

4、Last-Modified和Expires

Last- Modified标识能够节省一点带宽,但是还是逃不掉发一个HTTP请求出去,而且要和Expires一起用。而Expires标识却使得浏览器干脆连 HTTP请求都不用发,比如当用户F5或者点击Refresh按钮的时候就算对于有Expires的URI,一样也会发一个HTTP请求出去,所 以,Last-Modified还是要用的,而 且要和Expires一起用。

5、 Etag和Expires

如果服务器端同时设置了Etag和Expires 时,Etag原理同样,即与Last-Modified/Etag对应的HttpRequest Header:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和WebServer发出的 Last-Modified,Etag值完全一样;在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和 Etag之后,服务器才能返回304.

6、Last-Modified和Etag

Last-Modified 和ETags请求的http报头一起使用,服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改,来决定文件是否继续缓存

过程如下:

1. 客户端请求一个页面(A)。

2. 服务器返回页面A,并在给A加上一个Last-Modified/ETag。

3. 客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。

4. 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。

5. 服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

注:

1、Last- Modified和Etag头都是由Web Server发出的Http Reponse Header,Web Server应该同时支持这两种头。

2、Web Server发送完Last-Modified/Etag头给客户端后,客户端会缓存这些头;

3、客户端再次发起相同页面的请求时,将分别发送与Last-Modified/Etag对应的Http RequestHeader:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和 WebServer发出的Last-Modified,Etag值完全一样;

4、 通过上述值到服务器端检查,判断文件是否继续缓存;

二、Apache、 Lighttpd和Nginx中针配置Etag和Expires,有效缓存纯静态如css/js/pic/页面/流媒体等文件。

A、Expires

A.1、 Apache Etag

使用Apache的mod_expires 模块来设置,这包括控制应答时的Expires头内容和Cache-Control头的max-age指令

ExpiresActive On

ExpiresByType image/gif "access plus 1 month"

ExpiresByType image/jpg "access plus 1 month"

ExpiresByType image/jpeg "access plus 1 month"

ExpiresByType image/x-icon "access plus 1 month"

ExpiresByType image/bmp "access plus 1 month"

ExpiresByType image/png "access plus 1 month"

ExpiresByType text/html "access plus 30 minutes"

ExpiresByType text/css  "access plus 30 minutes"

ExpiresByType text/txt  "access plus 30 minutes"

ExpiresByType text/js   "access plus 30 minutes"

ExpiresByType application/x-javascript   "access plus 30 minutes"

ExpiresByType application/x-shockwave-flash     "access plus 30 minutes"

<ifmodule mod_expires.c>

<filesmatch "\.(jpg|gif|png|css|js)$">

ExpiresActive on

ExpiresDefault "access plus 1 year"

</filesmatch>

</ifmodule>
当设置了expires后,会自动输出Cache-Control 的max-age 信息

具体关于 Expires 详细内容可以查看Apache官方文档。

在这个时间段里,该文件的请求都将直接通过缓存服务器获取,

当然如果需要忽略浏览器的刷新请求(F5),缓存服务器squid还需要使用 refresh_pattern 选项来忽略该请求

refresh_pattern -i \.gif$ 1440 100% 28800 ignore-reload

refresh_pattern -i \.jpg$ 1440 100% 28800 ignore-reload

refresh_pattern -i \.jpeg$ 1440 100% 28800 ignore-reload

refresh_pattern -i \.png$ 1440 100% 28800 ignore-reload

refresh_pattern -i \.bmp$ 1440 100% 28800 ignore-reload

refresh_pattern -i \.htm$ 60 100% 100 ignore-reload

refresh_pattern -i \.html$ 1440 50% 28800 ignore-reload

refresh_pattern -i \.xml$ 1440 50% 28800 ignore-reload

refresh_pattern -i \.txt$ 1440 50% 28800 ignore-reload

refresh_pattern -i \.css$ 1440 50% 28800 reload-into-ims

refresh_pattern -i \.js$ 60 50% 100 reload-into-ims

refresh_pattern . 10 50% 60
有关Squid中Expires的说明,请参考Squid官方中refresh_pattern介 绍。

A.2、Lighttpd Expires

和Apache一样Lighttpd设置expire也要先查看是否支持了mod_expire模 块,

下面的设置是让URI中所有images目录下的文件1小时后过期;

expire.url = ( "/images/" => "access 1 hours" )
下面是让作用于images目录及其子目录的文件;

$HTTP["url"] =~ "^/images/" {
 
expire.url = ( "" => "access 1 hours" )
 
}
也可以指定文件的类型;

$HTTP["url"] =~ "\.(jpg|gif|png|css|js)$" {
 
expire.url = ( "" => "access 1 hours" )
 
}
具体参考Lighttpd官方Expires解释

A.3、Nginx中Expireslocation ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location ~ .*\.(js|css)?$

{

expires 1h;

}
这类文件并不常修改,通过 expires 指令来控制其在浏览器的缓存,以减少不必要的请求。 expires 指令可以控制 HTTP 应答中的” Expires “和” Cache-Control “的头标(起到控制页面缓存的作用)。其他请参考Nginx中Expires

B.1、Apache中Etag设置
在Apache中设置Etag的支持比较简单,只用在含有静态文件的目录中建立一个文件.htaccess, 里面加入:

FileETag MTime Size
这样就行了,详细的可以参考Apache的FileEtag文档页

B.2、 Lighttpd Etag
在Lighttpd中设置Etag支持:

etag.use-inode: 是否使用inode作为Etag

etag.use-mtime: 是否使用文件修改时间作为Etag

etag.use-size: 是否使用文件大小作为Etag

static-file.etags: 是否启用Etag的功能

第四个参数肯定是要enable的, 前面三个就看实际的需要来选吧,推荐使用修改时间

B.3、 Nginx Etag

Nginx中默认没有添加对Etag标识.Igor Sysoev的观点”在对静态文件处理上看不出如何Etag好于Last-Modified标识。”

Note:

Yes, it's addition,and it's easy to add, however, I do not see howETag is better than Last-Modified for static files. -Igor Sysoev

A nice short description is here:

http://www.mnot.net/cache_docs/#WORK

It looks to me that it makes some caches out there to cache theresponse from the origin server more reliable as in rfc2616(ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt) is written.
3.11 Entity Tags 13.3.2 Entity Tag Cache Validators 14.19 ETag

当然也有第三方nginx- static-etags 模块了,请参考

https://github.com/mikewest/nginx-static-etags

三、对于非实时交互动态页面中Expires和Etag处理

对数据更新并不频繁、如tag分类归档等等,可以考虑对其cache。简单点就是在非实时交互的动 态程序中输出expires和etag标识,让其缓存。但需要注意关闭session,防止http response时http header包含session id标识;

3.1、Expires

如expires.php

<?php
 
header('Cache-Control: max-age=86400,must-revalidate');
 
header('Last-Modified: ' .gmdate('D, d M Y H:i:s') . ' GMT' );
 
header("Expires: " .gmdate ('D, d M Y H:i:s', time() + '86400′ ). ' GMT');
 
?>
以上信息表示该文件自请求后24小时后过期。

其他需要处理的动态页面直接调用即可。

3.2、Etag

根据Http返回状态来处理。当返回304直接从缓 存中读取

如etag.php

>


cache();

echo date("Y-m-d H:i:s");

function cache()

{

$etag = "http://xok.la";

if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag)

{

header('Etag:'.$etag,true,304);

exit;

}

else header('Etag:'.$etag);

}

?>


本文来自: E点废墟(www.xok.la)

详细出处参考:http://xok.la/2010/11/apache_nginx_cache_last-modified%e3%80%81expires_etag.html

 

varnish,squid,apache,nginx缓存文件比较

http://blog.51yip.com/server/1032.html

一,测试环境

1,硬件是奔腾双核,机子三年前买的。系统是archlinux

2,测试varnish和squid的时候,web服务用的apache

3,测试apache的时候,启动了5个进程,不过随着压力的增加,进程会增加的。

4,测试nginx的时候,启动了十个nginx进程,20个php-cgi进程

 

5,varnish,squid,nginx用的是反向代理的形势,也就是说访问图片的时候,要先透过缓存工具

二,测试

1,varnish

[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=476508 pages/min, 47258114 bytes/sec.
Requests: 158836 susceed, 0 failed.

varnish的缓存效率命中率真的好高,看下图:

varnish

varnish

访问了这么次,没有缓存只有一次,效率真的很高。

2,squid

[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=133794 pages/min, 7475018 bytes/sec.
Requests: 44598 susceed, 0 failed.

从测试效果来说,squid挺让我失望的,在测试前,我心里是这样估计的,缓存最好的是 varnish,其次是squid,然后nginx,最后是apache,现在呢,squid是最差的。后来我看了一下log文件,发现正常情况下,缓存 和没有缓存的比率不是1:2,如果在高压力下,缓存和没有缓存的比率更小。

3,apache

[root@BlackGhost conf]# /usr/local/bin/webbench -c 100 -t 20 http://localhost/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=160890 pages/min, 15856005 bytes/sec.
Requests: 53630 susceed, 0 failed.

4,nginx

[root@BlackGhost conf]# /usr/local/bin/webbench -c 100 -t 20 http://localhost:10000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:10000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=304053 pages/min, 30121517 bytes/sec.
Requests: 101351 susceed, 0 failed.

从上面的测试结果我们可以发现,varnish > nginx > apache > squid,我想这个结果,根大家预期的结果有点出入,因为squid做老牌文件缓存工具怎么会这么差呢,squid的命中率低,我在网上查了一下,很多 人都是这样的,这个可能根个人配置有关系,也许真正的高手,才能让squid发挥最大功力。

posted @ 2011-12-12 14:12 小马歌 阅读(763) | 评论 (0)编辑 收藏
 

注:本篇是关于http头信息cache的一些说明,理论行较强,但是很有用,不管是开发还是运维都得了解,如果还没有研究到这一块的朋友看起来觉得会比较枯燥。

转载于:http://hi.baidu.com/feilala_fly/blog/item/29b9f200f26c5f03738b6521.html

Http的Cache机制总共有4个组成部分:

Cache-Control、Last-Modified(If-Modified-Since)、Etag(If-None-Match) 、Expires

服务器响应头:Last-Modified,Etag
浏览器请求头:If-Modified-Since,If-None-Match

服务器发出Etag,Last-Modified头后,下次浏览器再进行同样的请求,则会发出If-None-Match,If-

Modified-Since头,而后服务器根据这些信息来判断是否需要发送数据,如果没有更新,服务器就简单的

发送一个304状态告诉浏览器用缓存就OK了,不用下载数据了,从而节约了带宽。

Last-Modified / If-Modified-Since

Last-Modified是响应头,If-Modified-Since是请求头。Last-Modified把Web组件的最后修改时间告诉客

户端,客户端在下次请求此Web组件的时候,会把上次服务端响应的最后修改时间作为If-Modified-Since

的值发送给服务器,服务器可以通过这个值来判断是否需要重新发送,如果不需要,就简单的发送一个

304状态码,客户端将从缓存里直接读取所需的Web组件。如果有更新,返回HTTP 200和更新的页面内容,

并且携带新的”ETag”和”LastModified”。

    使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。

ETag / If-None-Match

ETag是响应头,If-None-Match是请求头。Last-Modified / If-Modified-Since的主要缺点就是它只能精确到秒的级别,一旦在一秒的时间里出现了多次修改,那么Last-Modified / If-Modified-Since是无法体现的。相比较,ETag / If-None-Match没有使用时间作为判断标准,而是使用一个特征串。Etag把Web组件的特征串告诉客户端,客户端在下次请求此Web组件的时候,会把上次服务端响应的特征串作为If-None-Match的值发送给服务端,服务端可以通过这个值来判断是否需要从重新发送,如果不需要,就简单的发送一个304状态码,客户端将从缓存里直接读取所需的Web组件。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。

 

当服务器发出响应的时候,可以通过两种方式来告诉客户端缓存请求:

第一种是Expires,比如:Expires: Sun, 16 Oct 2016 05:43:02 GMT在此日期之前,客户端都会认为缓存是有效的。

不过Expires有缺点,比如说,服务端和客户端的时间设置可能不同,这就会使缓存的失效可能并不能精确的按服务器的预期进行。

第二种是Cache-Control,比如:Cache-Control: max-age=3600

这里声明的是一个相对的秒数,表示从现在起,3600秒内缓存都是有效的,这样就避免了服务端和客户端时间不一致的问题。

但是Cache-Control是HTTP1.1才有的,不适用与HTTP1.0,而Expires既适用于HTTP1.0,也适用于HTTP1.1,所以说在大多数情况下同时发送这两个头会是一个更好的选择,当客户端两种头都能解析的时候,会优先使用Cache-Control基础知识

         1) 什么是”Last-Modified”? 

         在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(Http Reponse Header)此文件在服务期端最后被修改的时间,格式类似这样: 

        Last-Modified: Fri, 12 May 2006 18:53:33 GMT

         客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头(Http Request Header),询问该时间之后文件是否有被修改过: 

        If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

         如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。 
:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,Apache会认为是个非法请求

         2) 什么是”Etag”? 

         HTTP 协议规格说明定义ETag为“被请求变量的实体值” (参见 —— 章节 14.19)。 另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式: 

        ETag: "50b1c1d4f775c61:df3"

         客户端的查询更新格式是这样的: 

        If-None-Match: "50b1c1d4f775c61:df3"

         如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。本人测试Etag主要在断点下载时比较有用。
        
       Last-Modified和Etags如何帮助提高性能?
         聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。 
         过程如下:
                 1. 客户端请求一个页面(A)。 
                 2. 服务器返回页面A,并在给A加上一个Last-Modified/ETag。 
                 3. 客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。 
                 4. 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。 
                 5. 服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

注:
1、Last-Modified和Etag头都是由Web Server发出的Http Reponse Header,Web Server应该同时支持这两种头。
2、Web Server发送完Last-Modified/Etag头给客户端后,客户端会缓存这些头;
3、客户端再次发起相同页面的请求时,将分别发送与Last-Modified/Etag对应的Http Request Header:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和Web Server发出的Last-Modified,Etag值完全一样;
4、通过上述值到服务器端检查,判断文件是否继续缓存;

 

关于Etag和Last-Modified网上还有更精辟的解释

1、关于Last-Modified

HTTP的Response中还会有另外一个Header叫Last-Modified,比如

“Last-Modified: Thu, 06 Apr 2006 21:17:12 GMT”,

浏览器访问一个URI得到这样的Resposne之后,就知道这个资源最后一次的修改时间,下次需要再次获得这个资源的时候,会发一个Request给Server,不过这个Request中有一条

“If-Unmodified-Since: Thu, 06 Apr 2006 21:17:12 GMT”,

如果在Server端在这个日期之后对这个资源进行了修改,就会照常返回这个资源给Client端,但是如果没有修改,就会返回一个304 (Not Modified) Response而不返回资源,告诉Client端:“这个资源从上次给你之来从来没改过,你放心用你Cache中的好了。” 一个304 Response比一个静态资源通常小多了,这样就节省了网络带宽。

 

2、Last-Modified和Expires的区别

让我们回过头来比较一下Expires和Last-Modified这两个东西,似乎Last-Modified比不上Expires,因为虽然它能够节省一点带宽,但是还是逃不掉发一个HTTP请求出去,而Expires却使得浏览器干脆连HTTP请求都不用发,岂不痛快!那还要Last- Modified这个物体干什么?理想状况的确是这样,不过当用户在IE或者Firefox里面按F5或者点击Refresh按钮的时候(不是在URL栏里重新输入一遍URL然后回车),就算对于有Expires的URI,一样也会发一个HTTP请求出去,所以,Last-Modified还是要用的,而且要和Expires一起用。 

3、Etag

除了Last-Modified,HTTP Response中还可能有另外一个Header: ETag,使得Server上的静态资源有点“版本控制”的味道,假如HTTP Response中包含

ETag: "abcdefg1234:0001"

等于告诉Client端,你拿到的这个版本的资源有个ID,叫做abcdefg1234:0001,下次需要发Request索要同一个URI的时候,在Request里面加一条

If-None-Match: "abcdefg1234:0001"

好,Server 端做了一些修改,下次这个Client再来了一个请求,但是这时候资源已经改了,所以返回这个新资源,还有新的tag “ETag: "abcdefg4567:0001"”(这个etag我是胡写的),这样,Client端等于Cache了两份,在需要索要这个资源的时候,可以包含这样的Header: “If-None-Match: "abcdefg1234:0001" "abcdefg4567:0001"”,这样,即使Server端头脑发热,把这个资源Roll back回原来的版本,依然会返回304 (Not Modified) Response,因为它知道Client端Cache着以前的版本呢,这点功能是Last-Modifed/If-Not-Modified没法做到的。 

4、Etag的弊端

不过ETag/If-None-Match这点功能实在是个鸡肋,首先,Server端的资源不大可能Roll Back,更重要的是,有可能造成Client Performance下降。对于只有一个Server的网站,没什么问题,但是现在稍微上点规模的网站都需要Scale Out,也就是说需要前端一个Load Balancer,后面接多台Server来处理请求,俗称Cluster,既然是Cluster,那么每个请求到底返回什么结果应该和分配到哪个 Server无关,不过这个ETag可能就坏事了。假如用户的第一次请求分配给Server A,返回“ETag: "abcdefg1234:0001"”,但是第二次请求分配给了Server B,Server B上这个资源和Server A上的一模一样,但是计算出这个资源的ETag是"abcdefg1234:0002",这下麻烦了,虽然内容一样,但是ETag不匹配,还是浪费了带宽把资源发送了一遍,冤枉啊!而事实上,不同Server上的ETag很有可能不同,对于Apache,ETag的计算考虑了inode,对于 IIS,ETag考虑了metabase的修改版本,要保证不同server上的这些信息一致,有点小难。不过不是有Last-Modified/If- Not-Modified吗?Server端看到If-Modified-Since,对照一下时间对得上,不管If-None-Match,可以直接发回304(Not Modified)呀,很不幸,RFC2616对这种情况做了规定,如果既有If-None-Match又有If-Modified-Since,除非两者不冲突,不然不会返回304。

 

所以说ETag就是一个害人精,按照Yahoo的建议,别费劲想办法同步不同Server上的ETag了,干脆就把ETag删除得了(缺省,Apache和 IIS都是有ETag的),我Sniff了一下Yahoo的若干网页返回HTTP Response,的确没有ETag,人家的确是知行合一

对于Apache,在httpd.conf或者.htaccess中加一行就搞定了:

5、Apache中的Etag设置
补充:
Apache默认开启Etag,可以使用FileEtag来设置

FileETag none|INode|MTime|Size|All

从apache的实现中http_etag.c我们可以发现,Apache的Etag包括了Inode|Mtime|Size这些因素。

对于IIS 6,可就有点费劲了,首先,似乎没有办法通过Config来把ETag去掉,查了很多资料,问了很多人,似乎能够去掉ETag的办法只有写一个ISAPI Filter来弄,Sniff了一下Microsoft的几个网页的结果显示ETag都稳当当的存在,估计目前真的没有什么好方法。

只好退而取其次,保证不同Server上的ETag一致了。 IIS对Etag的计算算法是ETag = {Filetimestamp:ChangeNumber}, Filetimestamp保持一致没什么问题,ChangeNumber是metabase的change number,就有点难保证Cluster中每个Server都一样了,所以,干脆就把它设成固定值好了,这个连接告诉我们该怎么办,很可惜,没有找到彻底删除ETags的配置。

当然转载于此方便以后自己查阅!!!!

posted @ 2011-12-12 14:12 小马歌 阅读(621) | 评论 (0)编辑 收藏
 
最近发现一款很好的网页快速设计工具Balsamiq Mockups。
  用下来发现它真正抓住了原型设计的核心与平衡点,既能快速设计草图,又能比较好地进入到平时团队工作的流程和工具中,可以说是击中了原型设计的Sweet Spot,强烈推荐!

先看看截图:
 

下面来说说它的功能和亮点:

  1.操作方面,拖拽,控件分组,甚至元素之间的对齐都做得很贴心;

  2.预制了很多界面元素,从简单的输入框,下拉框,浏览器主要元素,到经常用得到的导航条,日历,表格,到复杂的Tag Cloud,Cover Flow, 地图,WYSWYG的格式工具栏等,有了这些不用从头画起,往往比用白板都快;

  3.界面元素的修改很简单,比如导航条的几个标签页的label,就是用逗号分隔的文字,下拉框的选项就是分行的文字;

  4.使用xml语言来记录和保存界面元素和布局, 
     1.这使得每个设计都能被很好得放进SVN,Git,和CVS等工具中进行管理和跟踪;
     2.可以设计复杂的界面元素,保存后,以后可以重复使用(包括修改);

  5.可以将设计导出成PNG格式的图片;

 
  6.可以用命令行进行导出操作,这样就能让我写个脚本,从svn里checkout某个目录下的所有设计文件后,导出图片,打包后用邮件发到项目经理,工程师甚至客户那;

  7.跨平台,Balsamiq Mokups是用Flex和Air实现的,所以在Mac OS,Linux和Windows下都能使用;

  8.不仅仅有桌面版本,还有能集成在Confluence,JIRA,和XWiki中的版本,使得异地在线协作更方便有效;

posted @ 2011-12-12 14:04 小马歌 阅读(475) | 评论 (0)编辑 收藏
 

配置的重点在server这个node上,其他用nginx默认配置就行,这里就只写出server那一块的配置。因为symfony需要一些php $_SERVER里的变量来做路由,但是nginx赋给php的$_SERVER值并不是完全正确的,我也是查了不少资料才调好的,希望能对想让symfony在nginx上跑的同学有所帮助


http {
  ...
  server {
    listen      80; #nginx的端口
    server_name localhost; #网站网址,这里以localhost为例
    root        /path/to/root; #根目录路径
    chareset    utf-8;
    location /sf/ { #如果url匹配"/sf/"
      alias /path/to/symfony/data/web/sf/; #访问/sf下面的资源所在的目录
    }
    location ~ ^/.+\.php(/.*)?$ { #如果匹配类似/frontend_dev.php/*这样的
      set $script $fastcgi_script_name; #像/frontend_dev.php这样的url,直接把$fastcgi_script_name赋值给$script
      if ($document_uri ~ ^(.+\.php)(/.*)) { #如果又匹配/frontend_dev.php/article/1这样的
        set $script    $1; #把frontend_dev.php赋值给$script
        set $path_info $2; #把/article/1赋值给$path_info,如果用nginx默认的配置,$_SERVER['path_info']会不正确而导致symfony找不到正确的路由
      }
      fastcgi_pass  127.0.0.1:9000; #php-cgi服务
      #下面开始给php的$_SERVER相关变量赋值,不写对都有可能运行不了symfony
      include       fastcgi_params; #这里面有很多nginx默认给php的$_SERVER赋的环境变量值,
                                    #如果你想要把这句放后面的话,下面已经赋过值的记得注释掉,否则又被覆盖回原来的错误值
      fastcgi_param SCRIPT_FILENAME $document_root$script;
      fastcgi_param SCRIPT_NAME     $script;
      fastcgi_param PATH_INFO       $path_info;
      fastcgi_param DOCUMENT_URI    $document_uri;
      
    }
    location / { #当前面的规则都不匹配,就运行这个(剩下的url肯定都匹配/)
      if (-f $request_filename) { #如果资源(像css,js这样的文件)和请求的url是匹配的,也就是说能根据url直接找到
        expires max; #那就永不过期
        break;       #并且不往下执行了
      }
      #否则得话都给他rewrite到index.php上去
      rewrite .* /index.php last;
    }
  }
}
关于path_info部分还有更简单的写法,而且是官方例子,参见我另外一篇博客。

另外配置symfony等单一入口框架也有更好的例子,参见我新写的文章

posted @ 2011-12-12 11:37 小马歌 阅读(954) | 评论 (0)编辑 收藏
 

1 新建立工程
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony generate:project mycms
2 创建前台和后台
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony generate:app frontend 
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony generate:app backend
3 生成model表单模型
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony doctrine:build --all
4 从data下填充数据库到数据库
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony doctrine:generate-module frontend job Job --with-show --non-verbose-template
5 生成后台action及模版
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony doctrine:generate-admin backend Category
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony doctrine:generate-admin backend Content
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony doctrine:generate-admin backend Comment
6 格式化后台程序的输出 
D:\xampp\htdocs\mycms>D:\symfony\data\bin\symfony plugin:publish-assets
7 创建前台程序
D:\xampp\htdocs\mycms>symfony doctrine:generate-module frontend category Category --with-show
D:\xampp\htdocs\mycms>symfony doctrine:generate-module frontend content Content --with-show
D:\xampp\htdocs\mycms>symfony doctrine:generate-module frontend comment Comment --with-show
8 目前位置一个带有前台和后台的应用程序已经全部好了。

//---------------------------yml 应用程序的数据库 ---------------------------------
Category:
columns:
    name: string(50)
    description: string(1000)

Content:
actAs:
    Timestampable: ~
columns:
    title: string(255)
    body: clob
    view_count: integer
    recommend_level:
      type: enum
      values: [0,1,2]
      default: 2
    category_id: integer
relations:
    Category:
      local: category_id
      foreign: id
      foreignAlias: Contents

Comment:
columns:
    body: clob
    user_id: integer
    content_id: integer
relations:
    Content:
      local: content_id
      foreign: id
      foreignAlias: Comments
//---------------------------yml 应用程序的后台样式 ---------------------------------   
generator:
class: sfDoctrineGenerator
param:
    model_class:           category
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          category
    with_doctrine_route:   true
    actions_base_class:    sfActions

    config:
      actions:
        _delete:
          label: 删除
        _list:
          label: 返回管理
      fields:
        id:
          label: 编号
        name:
          label: 名字
        description:
          label: 描述
      list:
        title: 信息管理
        display: [id,=name,description]
        layout: stacked
        #params: 编号:%%id%%<br />名字:%%name%%<br />描述:%%description%%<br />
        sort: [title,view_count,category, DESC]
        max_per_page: 6
        batch_actions:
          _delete:
            label: 删除
          publish:
            label: 发布
        object_actions:
          _edit:
            label: 编辑
          _delete:
            label: 删除
          publish:
            label: 发布
        actions:
          _new:
            label: 创建

      filter: ~
      form:    ~
      edit:    ~
      new:     ~

posted @ 2011-12-10 19:45 小马歌 阅读(229) | 评论 (0)编辑 收藏
 

正骨操

1.       立位拉筋:站立,双手十指交叉,手心向上,伸直上臂,两臂尽力贴近双耳。脚尖踮起,缓缓落脚跟36次。

2.       颤筋:与立位拉筋动作相同,脚尖踮起后,颤动脚跟,通过颤动,带动整个脊椎一起运动,由慢到快,循序渐进。每次颤动时间1分钟。

3.       转腿划圆:站立,双脚并拢,左脚脚尖点地。抬左脚不超过膝盖,用大腿带动小腿,以胯为轴,由前至后划圆36次。脚尖始终保持向下。之后由后向前划圆36次。两脚交替。

4.       左右提胯:站立,双脚并拢。保持上身不动,全身放松,尽力向上提胯,左右各提一次为一组,每次做36组。整个练习过程中膝盖不能弯,肩膀不能晃动。

5.       左右转腰:坐姿,两腿与肩同宽,腰部放松,左右摇摆腰部36次。上身不要晃动。

6.       平面转腰:坐姿,保持上身不动,自左向右转动腰身36次,然后再自右向左转动36次。

7.       上下转腰:坐姿,保持上身不动,尽力吸气收腹,腰向后弯,肚子自下而上运动;呼气鼓肚子,腰向前挺,肚子自上而下运动。反复36次;尽力呼气鼓肚子,腰向前挺,肚子自上而下运动;吸气收腹,腰向后弯,肚子自下而上运动。反复36次。

8.       打开胸椎:坐姿,腰背挺直,两臂向两次伸直,掌心向前,拇指向上,其余四指并拢。用眼睛看着左手拇指,以腰为轴,身体向左后方转动至极限,两臂要始终保持伸直,到达极限后保持10秒,慢慢恢复原位。以36次为一组。一定要做完左侧后再做右侧。

9.       转动颈椎:坐姿,双手放在大腿上,上身挺直。低头缩脖(呈乌龟状),下巴尽力贴胸口。以下巴带动颈椎,自左向右水平划圆36次。之后自右向左划圆36次。注意转动时不能太快。

10.    抬头望月:坐姿,腰背挺直,转头尽力向左上方看,达到极限后头向右侧尽力压右肩。左右各做10次。

11.    转肩1:站立,两脚与肩同宽,双手下垂,转动肩膀。转肩时两臂跟随肩膀向上微微抬起,掌心向下,肩膀向后下方压住肩胛骨下的膏肓穴几秒后复原。重复36次。

12.    转肩2:站立,两脚与肩同宽,两臂向两次伸直,掌心向前,拇指向上,其余四指并拢。缓慢向前转动小臂,快达到极限时突然发力,利用寸劲震动双肩。

13.    举臂转头:坐姿,腰背挺直,双手十指交叉,手心向上置于头后,两臂在头后划圆。

以上为个人总结归纳,请在陈医生指导下练习。

posted @ 2011-12-09 18:22 小马歌 阅读(330) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 44 45 46 47 48 49 50 51 52 下一页 Last