首页 热点资讯 义务教育 高等教育 出国留学 考研考公

web 浏览器缓存 需要前端设置么

发布网友 发布时间:2022-04-24 17:47

我来回答

4个回答

懂视网 时间:2022-04-20 13:23

本篇文章给大家带来的内容是关于web前端如何更新缓存?单例模式封装opendatabase ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

如果不了解opendatabase数据库的操作的各位,建议先学上一篇《web前端缓存之四opendatabase》后,再来看这一篇的内容,本章内容也是前端缓存系列的最后一遍,对opendatabase数据库的一个简单的封装,当然对于具有java基础的童鞋们,可以忽略此篇文章。

好了,废话不多说,直接直奔主题,请看正文吧(还是基于上一篇的实例来写的):

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>

<!--
openDatabase与android里面的sqlite差不多
最好的选型存储
-->

<h1>opendatabse数据库操作</h1>

<button id="btn-create">创建user数据表</button>
<button id="btn-insert">插入数据</button>
<button id="btn-query">查询数据</button>
<button id="btn-update">修改数据</button>
<button id="btn-delete">删除数据</button>
<button id="btn-drop">删除user数据表</button>

<script type="text/javascript">

 let findId = id => document.getElementById(id);

 //模拟一条user数据
 let user = {
 username: "liuqiang",
 password: "123569874",
 info: "beaconApp开发团队中一员"
 };

 /**
 * 创建数据库 或者此数据库已经存在 那么就是打开数据库
 * name: 数据库名称
 * version: 版本号
 * displayName: 对数据库的描述
 * estimatedSize: 设置数据的大小
 * creationCallback: 回调函数(可省略)
 */
 let db = openDatabase("MySql", "1.0", "我的数据库描述", 1024 * 1024);
 let result = db ? "数据库创建成功" : "数据库创建失败";
 console.log(result);


 const USER_TABLE_SQL = "create table if not exists userTable (id integer primary key autoincrement,username varchar(12)," +
 "password varchar(16),info text)";

 const INSERT_USER_SQL = "insert into userTable (username, password,info) values(?,?,?)";

 const QUERY_USER_SQL = "select * from userTable";

 const UPDATE_USER_SQL = "update userTable set password = ? where username = ?";

 const DELETE_USER_SQL = "delete from userTable where username = ?";

 const DROP_USER_SQL = "drop table userTable";

 /**
 * 封装数据库工具类
 */
 class DatabaseUtil {
 /**
  * 构造方法
  * @param sqlSentence 数据库语句
  * @param params 数据库操作的参数
  */
 constructor(sqlSentence, ...params) {
  this.sqlSentence = sqlSentence;
  this.params = params;
 }

 //获取当前实例
 static getInstance(sqlSentence, ...params) {
  return new DatabaseUtil(sqlSentence, ...params)
 }

 /**
  * 执行数据库操作
  * @param callback 成功的回调
  * @param errorCallback 失败的回调
  */
 execute(callback, errorCallback) {
  db.transaction(tx => {
  tx.executeSql(this.sqlSentence, this.params, callback, errorCallback)
  })
 }
 }

 /**
 * 点击事件 增删查改
 */
 let btnCreate = findId("btn-create");
 let btnInsert = findId("btn-insert");
 let btnQuery = findId("btn-query");
 let btnUpdate = findId("btn-update");
 let btnDelete = findId("btn-delete");
 let btnDrop = findId("btn-drop");
 //创建数据表
 btnCreate.onclick = () => DatabaseUtil.getInstance(USER_TABLE_SQL)
 .execute(function (transaction, resultSet) {
  alert('创建user表成功:' + result);
 }, function (transaction, error) {
  alert('创建user表失败:' + error.message);
 });
 //插入数据
 btnInsert.onclick = () => DatabaseUtil.getInstance(INSERT_USER_SQL, user.username, user.password, user.info)
 .execute(function (transaction, resultSet) {
  alert("添加数据成功")
 }, function (transaction, error) {
  alert("添加数据失败:" + error.message)
 });
 //查询数据
 btnQuery.onclick = () => DatabaseUtil.getInstance(QUERY_USER_SQL)
 .execute(function (transaction, resultSet) {
  console.log(resultSet);
 }, function (transaction, error) {
  alert("查询失败:" + error.message)
 });
 //修改数据
 btnUpdate.onclick = () => {
 user.password = "111666666";//修改密码
 DatabaseUtil.getInstance(UPDATE_USER_SQL, user.password, user.username)
  .execute(function (transaction, resultSet) {
  alert("修改数据成功")
  }, function (transaction, error) {
  alert("修改数据失败:" + error.message)
  })
 };
 //删除数据
 btnDelete.onclick = () => DatabaseUtil.getInstance(DELETE_USER_SQL, user.username)
 .execute(function (transaction, resultSet) {
  alert("删除数据成功")
 }, function (transaction, error) {
  alert("删除数据失败:" + error.message)
 });
 //删除数据表
 btnDrop.onclick = () => DatabaseUtil.getInstance(DROP_USER_SQL)
 .execute(function (transaction, resultSet) {
  alert("删除数据表成功")
 }, function (transaction, error) {
  alert("删除数据表失败:" + error.message)
 });

</script>
</body>
</html>

热心网友 时间:2022-04-20 10:31

  缓存的概念
  缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存。 数据库也有缓存, 等等。
  http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。
  http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。
  缓存的好处
  缓存的好处是显而易见的, 好处有,
  1. 减少了冗余的数据传输,节省了网费。
  2. 减少了服务器的负担, 大大提高了网站的性能
  3. 加快了客户端加载网页的速度
  Fiddler可以方便地查看缓存的header
  Fiddler中把header都分门别类的放在一起,这样方便查看。
  HTTP缓存是如何实现
  如何判断缓存新鲜度
  Web服务器通过2种方式来判断浏览器缓存是否是最新的。
  第一种, 浏览器把缓存文件的最后修改时间通过 header ”If-Modified-Since“来告诉Web服务器。
  第二种, 浏览器把缓存文件的ETag, 通过header "If-None-Match", 来告诉Web服务器。
  通过最后修改时间, 来判断缓存新鲜度
  1. 浏览器客户端想请求一个文档, 首先检查本地缓存,发现存在这个文档的缓存, 获取缓存中文档的最后修改时间,通过: If-Modified-Since, 发送Request给Web服务器。
  2. Web服务器收到Request,将服务器的文档修改时间(Last-Modified): 跟request header 中的,If-Modified-Since相比较, 如果时间是一样的, 说明缓存还是最新的, Web服务器将发送304 Not Modified给浏览器客户端, 告诉客户端直接使用缓存里的版本。

热心网友 时间:2022-04-20 11:49

浏览器缓存可以由前端设置,但大多数是服务端设置
前端设置缓存通过html文件的meta标签设置相应的缓存时间、过期时间等
但大多数情况下都是服务端返回的响应头中设置这些参数

热心网友 时间:2022-04-20 13:23

缓存的概念
缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存。 数据库也有缓存, 等等。
http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。
http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。
缓存的好处
缓存的好处是显而易见的, 好处有,
1. 减少了冗余的数据传输,节省了网费。
2. 减少了服务器的负担, 大大提高了网站的性能
3. 加快了客户端加载网页的速度
Fiddler可以方便地查看缓存的header
Fiddler中把header都分门别类的放在一起,这样方便查看。
HTTP缓存是如何实现
如何判断缓存新鲜度
Web服务器通过2种方式来判断浏览器缓存是否是最新的。
第一种, 浏览器把缓存文件的最后修改时间通过 header ”If-Modified-Since“来告诉Web服务器。
第二种, 浏览器把缓存文件的ETag, 通过header "If-None-Match", 来告诉Web服务器。
通过最后修改时间, 来判断缓存新鲜度
1. 浏览器客户端想请求一个文档, 首先检查本地缓存,发现存在这个文档的缓存, 获取缓存中文档的最后修改时间,通过: If-Modified-Since, 发送Request给Web服务器。
2. Web服务器收到Request,将服务器的文档修改时间(Last-Modified): 跟request header 中的,If-Modified-Since相比较, 如果时间是一样的, 说明缓存还是最新的, Web服务器将发送304 Not Modified给浏览器客户端, 告诉客户端直接使用缓存里的版本。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com