面向站长和网站管理员的Web缓存加速指南[翻译]

作者:车东 来源:笔记 by 车东 时间:2008-04-22 21:04:00 


这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。

相关文章推荐:ASP使用缓存方法及缓存类详解

  1. 什么是Web缓存,为什么要使用它?

  2. 缓存的类型:

    1. 浏览器缓存;

    2. 代理服务器缓存;

  3. Web缓存无害吗?为什么要鼓励缓存?

  4. Web缓存如何工作:

  5. 如何控制(控制不)缓存:

    1. HTML Meta标签 vs. HTTP头信息;

    2. Pragma HTTP头信息(为什么不起作用);

    3. 使用Expires(过期时间)HTTP头信息控制保鲜期;

    4. Cache-Control(缓存控制) HTTP头信息;

    5. 校验参数和校验;

  6. 创建利于缓存网站的窍门;

  7. 编写利于缓存的脚本;

  8. 常见问题解答;

  9. 缓存机制的实现:Web服务器端配置;

  10. 缓存机制的实现:服务器端脚本;

  11. 参考文档和深入阅读;

  12. 关于本文档;

什么是Web缓存,为什么要使用它?

Web缓存位于Web服务器之间(1个或多个,内容源服务器)和客户端之间(1个或多个):缓存会根据进来的请求保存输出内容的副本,例如html页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。

使用缓存主要有2大理由:

  • 减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快;

  • 减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

缓存的类型

浏览器缓存

对于新一代的Web浏览器来说(例如:IE,Firefox):一般都能在设置对话框中发现关于缓存的设置,通过在你的电脑上僻处一块硬盘空间用于存储你已经看过的网站的副本。浏览器缓存根据非常简单的规则进行工作:在同一个会话过程中(在当前浏览器没有被关闭之前)会检查一次并确定缓存的副本足够新。这个缓存对于用户点击“后退”或者点击刚访问过的链接特别有用,如果你浏览过程中访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。

代理服务器缓存

Web代理服务器使用同样的缓存原理,只是规模更大。代理服务器群为成百上千用户服务使用同样的机制;大公司和ISP经常在他们的防火墙上架设代理缓存或者单独的缓存设备;

由于带路服务器缓存并非客户端或者源服务器的一部分,而是位于原网络之外,请求必须路由到他们才能起作用。一个方法是手工设置你的浏览器:告诉浏览器使用 那个代理,另外一个是通过中间服务器:这个中间服务器处理所有的web请求,并将请求转发到后台网络,而用户不必配置代理,甚至不必知道代理的存在;

代理服务器缓存:是一个共享缓存,不只为一个用户服务,经常为大量用户使用,因此在减少相应时间和带宽使用方面很有效:因为同一个副本会被重用多次。

网关缓存

也被称为反向代理缓存或间接代理缓存,网关缓存也是一个中间服务器,和内网管理员部署缓存用于节省带宽不同:网关缓存一般是网站管理员自己部署:让他们的网站更容易扩展并获得更好的性能;
请求有几种方法被路由到网关缓存服务器上:其中典型的是让用一台或多台负载均衡服务器从客户端看上去是源服务器;

网络内容发布商  (Content delivery networks CDNs)分布网关缓存到整个(或部分)互联网上,并出售缓存服务给需要的网站,SpeederaAkamai就是典型的网络内容发布商(下文简称CDN)。

本问主要关注于浏览器和代理缓存,当然,有些信息对于网关缓存也同样有效;

标签:缓存,站长,服务器,优化,asp
0
投稿

猜你喜欢

  • 永不熄灭的爱心图标——腾讯公益月捐计划 “QQ首席图标”诞生记

    2009-09-01 19:43:00
  • Python实现MySQL操作的方法小结【安装,连接,增删改查等】

    2024-01-16 07:02:33
  • Python 类的魔法属性用法实例分析

    2022-02-20 07:22:15
  • 解决django服务器重启端口被占用的问题

    2023-11-10 14:14:12
  • Web设计色彩速查表

    2009-12-21 16:24:00
  • python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析

    2024-01-20 23:51:58
  • 使用python调用zxing库生成二维码图片详解

    2022-03-19 06:41:09
  •  Go 语言实现 HTTP 文件上传和下载

    2023-06-23 01:42:24
  • Linux自动备份MySQL数据库脚本代码

    2024-01-24 05:00:12
  • python删除不需要的python文件方法

    2021-10-02 23:29:11
  • python绘制地震散点图

    2021-12-21 13:09:08
  • 用 Python 连接 MySQL 的几种方式详解

    2023-07-25 08:08:50
  • Python+Pygame实现简单的射击小游戏

    2023-06-01 11:50:30
  • Python中ConfigParser模块示例详解

    2022-08-08 01:32:11
  • 使用python和pygame绘制繁花曲线的方法

    2021-05-05 04:47:11
  • Python使用Scrapy爬取妹子图

    2022-06-17 23:47:41
  • Django+boostrap 美化admin后台的操作

    2022-02-26 16:16:21
  • Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

    2021-03-14 19:03:19
  • Oracle 存储过程总结 二、字符串处理相关函数

    2009-07-07 10:28:00
  • python下函数参数的传递(参数带星号的说明)

    2022-12-20 02:58:59
  • asp之家 网络编程 m.aspxhome.com