使用缓存,是提升web性能最重要的方式之一。
在开发单页面应用的时候,大量的单静态资源引用都是依赖于html这个文件的。例如:
html,css,js文件可以缓存 都可以缓存。设想如下场景:
该页面内嵌入到app(或者微信)打开,静态文件缓存到app里面了。第一次访问,打开没问题,为了提升第二次访问的性能。我们应该设置缓存。缓存超时时间为1d(随便举例)。
即一天内我们随便访问这个页面都是 会从缓存中取资源。
问题来了:假如我们刚好在一天内,服务端静态静态资源有更新,怎么办?
css,js文件有hash值,但是html文件没有,html如果不更新,那么我们在指定时间内永远没法取到更新后的js和css值。
所以,我们的缓存策略是:不缓存html,只缓存js 和 css。
基于nginx静态文件服务器设置如下:
location /hhhh/ {
root /home;
#index index.html index.htm
try_files $uri /h5/index.html;
if ($request_filename ~* .*\.(?:htm|html)$)
{
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
if ($request_filename ~* .*\.(?:js|css)$)
{
expires 7d;
}
if ($request_filename ~* .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$)
{
expires 7d;
}
}
至于其他的缓存策略,可以基于此再完善。
至于引用一个固定名称的,没有hash值的css或js,比如 abc.css 在服务端有更新,怎么处理这种缓存,我们后续再讨论。
(网页)JS和CSS不缓存方法,时间戳
1. 单例模式的作用 可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问 从而方便地控制了实例个数,并节约系统资源 2. 单例模式的使用场合 在整个应用程序中,共享一份资源(这份资源 ...
CentOS 6.4 64位 安装 jdk 6u45
准备: 1.下载历史版本jdk 地址: http://java.sun.com/products/archive/ 下载的版本 jdk-6u45-linux-x64-rpm.bin Linux x6 ...
Android的多媒体框架OpenCore介绍
网上资料很少, 不过还是找到一个比较详细的说明: 特地在此整理了下: 地址:http://blog.csdn.net/djy1992/article/details/9339787 分为几个阶段: 1 ...
Java 集合:HashSet 与 ArrayList
Set 集合是无序不可以重复的的.List 集合是有序可以重复的. Java 集合:HashSet 与 hashCode.equals 博客里面已经说到这个问题,但是解释的还是不够清楚. 看一个小例子 ...
css3学习系列之移动
transform功能 放缩 使用sacle方法实现文字或图像的放缩处理,在参数中指定缩放倍率,比如sacle(0.5)表示缩小50%,例子如下: < ...
homestead安装
所谓Homestead,其实就是一个虚拟机镜像. 为什么用它?它的优点可以去自行百度.(虽然我还是用了集成环境 xampp,但是我还是不推荐的,特别是统一开发环境.或者去使用诸如Laravel的框架, ...
jsp (二) 练习
package cn.sasa.serv; import java.io.IOException; import java.sql.SQLException; import java.util.Lis ...
定时任务redis锁+自定义lambda优化提取冗余代码
功能介绍: 我系统中需要跑三个定时任务,由于是多节点部署,为了防止多个节点的定时任务重复执行.所以在定时任务执行时加个锁,抢到锁的节点才能执行定时任务,没有抢到锁的节点就不执行.从而避免了定时任务重复 ...