shitou's blog 

  • Home
  • About
  • Feed
  • 十人族
  • MIX BOY
  • 塌客
12
Aug

Etag和Expire

Etag

在HTTP1.1中有介绍,主要的作用就是在(css file, image, javascript file)文件后面添加一个唯一的参数(相当于查询参数字符串),Etag有服务器端生成,并且随着文件的改变而改变,这样浏览器端就会只重新请求获取Etag发生变化的文件,减少浏览器端数据的流量,加快浏览器的反应速度,重要的是减轻服务器端的压力,所以服务器端Etag的实现就比较重要了。

 

下面分别说下在Apache和Lighttpd中怎样配置Etag

 

Apache Etag

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

FileETag MTime Size

这样就行了,详细的可以参考Apache的文档页:Documentation

 

Lighttpd Etag

在Lighttpd中设置Etag支持:

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

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

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

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

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

 

Expires

过期时间是HTTP响应(response)的头部控制信息,浏览器会在指定过期时间内使用本地缓存,不用重新加载,对应的缓存对象主要是静态文件,如css,image, javascript; 可以在服务器端进行全局设置,也可以应用端进行设置,这里我会说下服务器端的设置

 

Apache

首先要确定Apache是否支持了mod_expired模块

然后在Apache的配置文件中加入:


  
       ExpiresActive on
       ExpiresDefault "access plus 1 year"
   
可以看出,配置时可以指定设置Expire对象的文件类型,以及过期时间,这里是一年后

Lighttpd 
Lighttpd设置expire也要先查看是否支持了mod_expire模块,查看vlighttpd.conf文件中
是否开启了该模块
然后就可以设置了:

下面的设置是让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" )
}
其他
设置较长的过期时间后如果想要客户端重新下载文件怎么办呢,比如当你修改了javascript或者
是css文件后,这时可以改变文件的文件名,最合适的做法是给文件加上一个版本号,
比如main_1.0.1.js, 这也是yahoo的做法。
当服务器的环境是cluster时,Etag的使用可能就要考虑的更多了,因为每个服务器生成的Etag
不一样,所以最终的浏览器每次都检测到文件的Etag不一样而去重新请求,这里就不多说了,
注意到这个问题就行了,好了,说完了

原文链接:原文

 

Tags: Etag

2008-08-12 17:38:23, 2590 reviews, comment

send to mailbox

Your email:

12
Aug

ruby解析RSS

以前写过怎样生成RSS了,这是解析,用的也是ruby内置的类库

require 'rss/2.0'
require 'open-uri'

class RssfeedController < ApplicationController

  def index
    feed_url = 'http://www.planetrubyonrails.org/xml/rss'
    output = "

My RSS Reader

" open(feed_url) do |http| response = http.read result = RSS::Parser.parse(response, false) output += "Feed Title: #{result.channel.title}
" result.items.each_with_index do |item, i| output += "#{i+1}. #{item.title}
" if i < 10 end end render_text output end end
下民是另一篇相关的文档: RSS
Tags: rss

2008-08-12 11:25:51, 996 reviews, comment

send to mailbox

Your email:

11
Aug

博客迁移到rails了

shitou's blog以前是基于php的,这几天迁移到了rails,由于以前的色调和现在的不一样,所以以前的文章字体的颜色有的可能和现在的不匹配,改动起来比较麻烦,所以就懒一下了,不该了,以后的文章会好的:)大笑

Tags:

2008-08-11 23:50:54, 713 reviews, comment

send to mailbox

Your email:

09
Aug

小高兴下

今天无聊着就在google.cn上搜了下自己的blog看能不能搜到,没想到第一个就是,呵呵高兴下,后再在baidu里也试了下,也可以搜到,不过baidu的效果不如google好,还是挺高兴的,呵呵

Tags: shitou

2008-08-09 16:58:15, 781 reviews, comment

send to mailbox

Your email:

08
Aug

Bash的陷阱

讲的不错,新手还是大大都应该看

地址: http://tech.idv2.com/2008/01/09/bash-pitfalls/

Tags:

2008-08-08 11:52:23, 925 reviews, comment

send to mailbox

Your email:

08
Aug

【转载】命令的小总结

在网上看到个命令的小总结,发现里面有几个平时还不知道,贴出来吧,回顾用

系统

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量

资源

# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载

磁盘和分区

# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息

进程

# ps -ef # 查看所有进程
# top # 实时显示进程状态

用户

# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务

服务

# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务

程序

# rpm -qa # 查看所有安装的软件包

Tags: shell

2008-08-08 11:00:00, 825 reviews, comment

send to mailbox

Your email:

上一页 1 2 ... 28 29 30 ... 34 35 下一页

Tags

json Impactjs Canvas fun gen_server superfly PS3 Webgame HTML5 jquery SSH tenerer MooseFS gearman-ruby Gearman MongoDB MochiChat TCP U-ka saegusa IN db command Mai Kuraki Norah Jones log iPhoneException ACG Mac Safari objective-c CouchDB LVS AJAX debian 推荐 AMQP google mail bug gettext Erlang 北京 iptables 架构 tips mysql backup function 我看 postfix 监控 SEO cache Etag memcache thread 进程 线程 无锡 yield file column mixboy xml rss gems ruby shitou shell lighttpd 安全 csrf 公司 nginx linux 模块 apache webserver 朋友 大学 生活 尼古拉斯凯奇 movie 文件同步 笑笑 歌词 auto complete plugin rails music ubuntu blog

Category

  • HTML5[3]
  • iPhone[17]
  • Erlang[11]
  • google[13]
  • 生活[45]
  • 音乐[13]
  • 电影[11]
  • linux[29]
  • web server[6]
  • mail server[3]
  • cluster[1]
  • system manage[9]
  • ruby[20]
  • ruby on rails[28]
  • 开源[4]

Episode

  • MongoDB
  • MochiChat
  • iPhoneException
  • shell
  • thread
  • memcache


Popular Posts

  • 准备开始学习Erlang了(恶狼, 二郎..)
  • Ruby遍历MemCached的key
  • 服务器监控小脚本
  • MySQL Innodb备份
  • [转载]5个有用的ruby gems

Recommended Posts

  • Tri-survive - HTML5 Game
  • Cut the rope - HTML5版
  • json_formatter
  • 在gen_server中spawn新的进程
  • Superfly - Wildflowers
  • 继续凸墙 for Mac OS
  • MongoDB Beijing 2011
  • MongoDB删除map_reduce生成的tmp collection
  • Mai Kuraki - Future Kiss
  • Erlang OOP
  • 用SSH tunnel凸墙
  • Google的语法高亮工具包
  • 大量数据的批量操作
  • 再次被和谐-_-
  • 十人族: 上线了

Friends' blogs

  • levy
  • sphance
  • andreas
  • yangkunlun
  • {:dev=>:wxianfeng}
  • bheye
  • joeydarko

Login

   注册

留言 查看留言

留言

   取消

留言 查看留言


Statistics

  • 访问次数: 316248
  • 今天访问: 43
  • 日志: 213
  • 评论: 4967
  • 音乐: 9
  • 用户: 1758


少年,不点下广告吗!

 

all by shitou

blog comments powered by Disqus

close