Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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
PHP中Cookie与会话的页面加载时间_Php_Cookies - Fatal编程技术网

PHP中Cookie与会话的页面加载时间

PHP中Cookie与会话的页面加载时间,php,cookies,Php,Cookies,我有一个社交网络类型的网站(会员网站)。当用户登录时,我会在用户会话中存储大量用户数据,如用户名、用户ID号、电子邮件、名字、照片URL,以减少每页DB查询的数量。我有时听到人们谈论将cookie用于某些事情,我意识到cookie不应用于用户名/密码,但主要问题是,cookie是否会减慢页面加载时间?在用户的主页上,我有一些块,用户可以拖放这些块来重新安排主页,我的第一个版本将这些块的位置存储在cookie中,现在将该值存储在mysql中,并在页面加载时用php构建块的位置,而不是使用javas

我有一个社交网络类型的网站(会员网站)。当用户登录时,我会在用户会话中存储大量用户数据,如用户名、用户ID号、电子邮件、名字、照片URL,以减少每页DB查询的数量。我有时听到人们谈论将cookie用于某些事情,我意识到cookie不应用于用户名/密码,但主要问题是,cookie是否会减慢页面加载时间?在用户的主页上,我有一些块,用户可以拖放这些块来重新安排主页,我的第一个版本将这些块的位置存储在cookie中,现在将该值存储在mysql中,并在页面加载时用php构建块的位置,而不是使用javascript设置初始位置。当我第一次使用cookie设置这些位置时,虽然页面将加载,块将位于原始位置,但页面将根据从cookie获得的值快速更改这些块的位置,但是这要慢得多,并且使页面看起来加载速度非常慢。从那时起,我一直认为饼干的速度很慢,但也许不是饼干让它慢了下来


cookie会降低页面速度吗?

cookie会略微增加页面的加载时间,因为每次请求都必须发送cookie数据

对于HTML页面来说,这不会有太大的区别,但是如果您的所有资产都在同一个域中(通常情况下),那么这会带来显著的差异


实际上,用PHP读取cookie不应该花费太多时间。

cookie只是一个额外的HTTP头,带有键/值对。解析该头并填充$\u COOKIE数组不会增加显著的开销(这几乎肯定不会成为瓶颈)

如果您在cookie中存储了大量数据(即,不仅仅是会话id),那么值得记住的是,这些数据会随每个请求一起发送到您的域,不仅仅是PHP页面,还有图像、CSS、JS等。因此,在高流量站点中,您可能会安排这些“静态”要从不同域提供服务的元素,以减少此开销的影响


如果该cookie值是会话标识符,那么PHP需要从文件系统、数据库或其他存储机制检索该会话,以填充$\u会话数组。这可能需要一点时间,但这实际上取决于使用的机制。

如果我理解正确,您是说您的页面在以下情况下运行缓慢:

  • 块的位置存储在cookie中
  • 在页面加载时,块被定位在Javascript中
我认为“慢”部分并不是来自饼干:

  • 与页面大小相比,这些页面非常小
    • 是的,它增加了一些开销,但对于单个页面来说并不是那么重要
    • 但是,如果您有很多资产(图像、静态文件等),那么这一点就变得更为重要,因为它们随每个请求一起发送
  • 它们包含的数据不多

但是,有了这个解决方案,可能会给人留下缓慢印象的是:

  • 页面在其默认位置加载块
  • 执行一些JS代码来重新定位块
    • 这意味着在重新定位块之前要等待一段时间
    • 这需要一些处理时间来执行JS代码
    • 这也意味着,对于浏览器来说,需要多次重新绘制页面(每次发生更改时)

IMHO,现在让您的页面“更快”的是,客户机接收到的整个页面中的块已经被很好地定位了——这意味着页面加载时根本没有处理:-)

较小的/不存在的cookies可能会有一点不同。。。但是很小



如果您想了解更多关于cookies大小及其对加载时间的影响,以及一些建议,您可以阅读雅虎的这篇文章:;这是一篇非常有趣的文章,也不难理解。

子域可以算作在同一个域上吗?我计划在images.domain.com上放置图像和内容如果你的主网站是这样的,那么如果你的主网站是这样的,那么就不(尽管我相信你可以在子域之间共享cookies,如果你愿意的话)你是指第二个域的www.example.com吗?