Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5-本地存储、cookie和SQL_Javascript_Sql_Html_Cookies_Local Storage - Fatal编程技术网

Javascript HTML5-本地存储、cookie和SQL

Javascript HTML5-本地存储、cookie和SQL,javascript,sql,html,cookies,local-storage,Javascript,Sql,Html,Cookies,Local Storage,基于我在上面看到的大量搜索结果,HTML5的localStorage功能似乎比Cookie更有用,只有当您需要存储大量不需要传输到服务器的数据时。() 我很难理解有人会如何/为什么使用此功能。有人能提供一个链接到真实世界的例子,说明本地存储的好处吗 另外,是否曾经有过这样的情况,本地存储会被用于……比如……向SQL数据库写入某些信息 抱歉,如果这是本网站上无数HTML5问题的重复。我读了一些,没有一个完全回答了我的问题。提前谢谢 localStorage是一个很好的存储应用程序设置的地方,您希望

基于我在上面看到的大量搜索结果,HTML5的localStorage功能似乎比Cookie更有用,只有当您需要存储大量不需要传输到服务器的数据时。()

我很难理解有人会如何/为什么使用此功能。有人能提供一个链接到真实世界的例子,说明本地存储的好处吗

另外,是否曾经有过这样的情况,本地存储会被用于……比如……向SQL数据库写入某些信息


抱歉,如果这是本网站上无数HTML5问题的重复。我读了一些,没有一个完全回答了我的问题。提前谢谢

localStorage是一个很好的存储应用程序设置的地方,您希望在会话之间保留这些设置(与sessionStorage相反),而不是将其传输到服务器(与cookie相反)。以前,为了避免不必要地将基于cookie的设置传输到服务器,您必须为cookie使用不同的子域

第二个重要的优点是,尽管本地存储使用SQLite,但浏览器会将所有本地存储值缓存在内存中。因此,虽然使用数据库API时,每个
executeSql
语句都是异步的,需要回调函数来获取数据,但localStorage是完全同步的,因为它直接从内存缓存中获取数据。这意味着从localStorage存储和检索大块数据的速度非常快

localStorage对象的实现方式也使得在代码中使用变得非常简单和直观。例如,您是否知道,您可以像使用任何其他对象一样使用localStorage,而不是使用
getItem
setItem

localStorage.someKeyName = 'someValue';
alert(localStorage.someKeyName); // alerts 'someValue'
delete localStorage.someKeyName; // removes the key
将其与从数据库检索单个记录所需的代码量进行比较:

var db = openDatabase('myDb', '', '', 1024);
db.compatibleReadTransaction(function (t) {
    t.executeSql('SELECT someField FROM someTable WHERE somePrimaryKey = 1', function(t, r) {
        console.log(r.rows.item(0));
    }, function () {
        // error
    });
});
真实世界示例


卫报web应用程序在localStorage中存储所有文章内容。这意味着页面加载是即时的。如果将内容存储在数据库中,那么它的速度就不会像从数据库异步获取每篇文章那样快,而且还需要调用SQLite查询引擎、运行回调等开销。

如果服务器不需要数据,我将始终使用localStorage。它避免了HTTP请求的膨胀,这在执行大量AJAX(或从同一域加载大量静态内容,但这无论如何都不是一个好主意)时尤为重要。我喜欢使用localStorage缓存客户端数据。所以我明白了……但也许我只是看不到全局。这并不是说我不同意这是一个有价值的功能……我只是还没有在现实世界中把这些点联系起来。因此,本质上,它是一种替代方法,可以将某些信息存储在隐藏字段中,也可以将其隐藏在其他HTML片段中以备将来参考。这听起来是对的吗?当然:)例如,Twitter使用它来缓存tweet的显示。因此,文章内容存储在SQL数据库中,提供给用户,在本地缓存在他们的本地存储数据库中,然后在将来的任何时候从那里引用。听起来是这样吗?这是否意味着在页面加载时总是有一个javascript检查,以测试浏览器是否已经缓存了可能提供服务的数据?是和是。该场景可能看起来像这样:应用程序只在localStorage中存储一个日期,记录上次更新的时间。当应用程序启动时,它会被发送到服务器,服务器会返回自该日期以来的任何新内容,这些内容会被添加到localStorage中的其余内容中,最旧的内容会被删除以节省空间。此外,localStorage api中是否内置了某种ORM样式的查询功能?例如,我不会编写SQL语句,而是将db中的项作为对象引用?e、 g.someTable.someField.Where(somePrimaryKey=1)?否。localStorage与任何其他JavaScript对象完全相同,只是其属性值只能是字符串。非常感谢您的帮助,Matt!