`
wezly
  • 浏览: 469970 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

可缓存的动态页面设计

阅读更多

什么样的页面能够比较好的被缓存服务器缓存呢?如果返回内容的HTTP HEADER中有"Last-Modified"和"Expires"相关声明,比如:
Last-Modified: Wed, 14 May 2003 13:06:17 GMT
Expires: Fri, 16 Jun 2003 13:06:17 GMT
前端缓存服务器在期间会将生成的页面缓存在本地:硬盘或者内存中,直至上述页面过期。
因此,一个可缓存的页面:

  • 页面必须包含Last-Modified: 标记
    一般纯静态页面本身都会有Last-Modified信息,动态页面需要通过函数强制加上,比如在PHP中:
    // always modified now
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

  • 必须有Expires或Cache-Control: max-age标记设置页面的过期时间:
    对于静态页面,通过apache的mod_expires根据页面的MIME类型设置缓存周期:比如图片缺省是1个月,HTML页面缺省是2天等。
    <IfModule mod_expires.c> 
        ExpiresActive on
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType text/css "now plus 2 day"
        ExpiresDefault "now plus 1 day"
    </IfModule>
     

    对于动态页面,则可以直接通过写入HTTP返回的头信息,比如对于新闻首页index.php可以是20分钟,而对于具体的一条新闻页面可能是1天后过 期。比如:在php中加入了1个月后过期:
    // Expires one month later
    header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 3600 * 24 * 30). " GMT");

  • 如果服务器端有基于HTTP的认证,必须有Cache-Control: public标记,允许前台

ASP应用的缓存改造 首先在公用的包含文件中(比如include.asp)加入以下公用函数:

<%
' Set Expires Header in minutes
Function SetExpiresHeader(ByVal minutes) 
    ' set Page Last-Modified Header:
    ' Converts date (19991022 11:08:38) to http form (Fri, 22 Oct 1999 12:08:38 GMT)
    Response.AddHeader "Last-Modified", DateToHTTPDate(Now())
    
    ' The Page Expires in Minutes
    Response.Expires = minutes
    
    ' Set cache control to externel applications
    Response.CacheControl = "public"
End Function 
' Converts date (19991022 11:08:38) to http form (Fri, 22 Oct 1999 12:08:38 GMT)
Function DateToHTTPDate(ByVal OleDATE)
  Const GMTdiff = #08:00:00#
  OleDATE = OleDATE - GMTdiff
  DateToHTTPDate = engWeekDayName(OleDATE) & _
    ", " & Right("0" & Day(OleDATE),2) & " " & engMonthName(OleDATE) & _
    " " & Year(OleDATE) & " " & Right("0" & Hour(OleDATE),2) & _
    ":" & Right("0" & Minute(OleDATE),2) & ":" & Right("0" & Second(OleDATE),2) & " GMT"
End Function 
Function engWeekDayName(dt)
    Dim Out
    Select Case WeekDay(dt,1)
        Case 1:Out="Sun"
        Case 2:Out="Mon"
        Case 3:Out="Tue"
        Case 4:Out="Wed"
        Case 5:Out="Thu"
        Case 6:Out="Fri"
        Case 7:Out="Sat"
    End Select
    engWeekDayName = Out
End Function
Function engMonthName(dt)
    Dim Out
    Select Case Month(dt)
        Case 1:Out="Jan"
        Case 2:Out="Feb"
        Case 3:Out="Mar"
        Case 4:Out="Apr"
        Case 5:Out="May"
        Case 6:Out="Jun"
        Case 7:Out="Jul"
        Case 8:Out="Aug"
        Case 9:Out="Sep"
        Case 10:Out="Oct"
        Case 11:Out="Nov"
        Case 12:Out="Dec"
    End Select
    engMonthName = Out
End Function
%>

 
然后在具体的页面中,比如index.asp和news.asp的“最上面”加入以下代码:HTTP Header

<!--#include file="../include.asp"-->
<%
'页面将被设置20分钟后过期
SetExpiresHeader(20)
%>
 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    PHP Squid中可缓存的动态网页设计

    记的,缓存系统架构中计中最好是后端来控制,所以最好的方法是程序来管理过期.呵,我只会php,就用php写一个,别的程序也是一样 见我下面的程序,呵呵,5分钟过期. &lt;?php $headers = apache_request_headers(); $client_...

    spring缓存

    记录使用EHCache实现页面级的缓存以及完成集群设计的过程

    Web应用与开发作业

    (1)禁止浏览器缓存所有动态页面; (2)有3个http响应头字段可以禁止浏览器缓存当前页面,它们在Servlet中的示例代码如下。 response.setDateHeader("Expires",-1); response.setHeader("Cache-Control","no-cache...

    分布式键值缓存系统FirstDB.zip

     @可应用在WEB页面加速。  @构建实时关键信息预测,例交通拥堵预测,道路设计建模。  @公安预警 ,实时环境况监控等实时性较强场景建模。 架构思想:  一致性哈希,主从模型等 模块构成:  智能...

    高效的缓存管理解决方案AutoLoadCache.zip

    设计思想及原理使用方法注解(Annotation)说明表达式的应用缓存删除注意事项缓存管理页面与Spring Cache的区别源码阅读已经实现基于aspectj,代码在com.jarvis.cache.aop.aspectj.AspectjAopInterceptor。...

    《设计色彩》课程网页设计.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    360网页设计.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    Fikker设计与实现V3

    3.8. 缓存页面淘汰算法设计 3.8.1. 缓存页面淘汰说明 3.8.2. 缓存页面淘汰优先级 3.8.3. 同一优先级时淘汰规则 3.9. 页面压缩gzip设计 3.9.1. 说明 3.9.2. HTTP头中有关gzip压缩的字段 3.9.3. 页面压缩的实现 4. URL...

    2020WEB网页设计.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    2021年网页设计作业.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    2018网页设计大赛作品.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    2016网页设计公选课.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    OSCache缓存技术

    尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统运行性能。 OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛...

    一种在线的动态网页分块缓存方法

    分块缓存技术能够有效提高动态网页的服务质量.现有的既存系统较少使用分块缓存技术设计,如何将其应用于这些系统是一个很大的挑战.本文提出了一种在线的动态网页分块缓存方法,使原系统演化成基于分块的系统,为用户...

    vue单页应用中多标签头显示及组件缓存设计实例

    系统中实现了路由标签头的显示,并且有路由组件的缓存,这样可以打开多个路由页面,通过标签头进行切换显示,不用每次点击都要刷新,这样使性能大大提高,应用的体验也更好。

    2022.5 网页设计大作业.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    通用的报表缓存设计(Spring AOP + Redis)

    通用的报表缓存设计项目背景现状态方案代码实现Redis配置注解AOP缓存(关键)业务调用(部分)测试结果:第一次第二次测试结果总结 项目背景 1:用户群体大, 2:业务计算量大,计算逻辑复杂。 现状态 1:主面页面,...

    2022计算机网络与网页设计课程代码.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

    《网页设计与制作》案例库.zip

    网页设计是一门综合性的艺术与技术,旨在创造用户友好、视觉吸引力和功能完善的在线体验。在现代数字时代,网页设计不仅仅是简单的视觉展示,更是用户与信息交互的关键媒介。以下是对网页设计的综合介绍。 首先,...

Global site tag (gtag.js) - Google Analytics