Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 缓存和避免缓存内容_Php_Memcached - Fatal编程技术网

Php 缓存和避免缓存内容

Php 缓存和避免缓存内容,php,memcached,Php,Memcached,我有一个带有一些用户可编辑变量的小部件,这些变量很少会被更新(可能只有在用户设置小部件时才会更新) 我通过memcache缓存小部件用户变量,而不是访问数据库。小部件的内容正在定期更改 我对它进行了设置,这样当用户创建或编辑他们的小部件时,小部件有一个&noCache参数,它可以避免缓存内容,并向他们显示小部件的最新版本 令人担忧的是,用户将获取小部件变量(包括noCache)并将其粘贴到某个页面中,从而完全忽略缓存 我正在考虑添加一个组件来检查用户登录,如果登录用户与小部件所有者匹配,那么就不

我有一个带有一些用户可编辑变量的小部件,这些变量很少会被更新(可能只有在用户设置小部件时才会更新)

我通过memcache缓存小部件用户变量,而不是访问数据库。小部件的内容正在定期更改

我对它进行了设置,这样当用户创建或编辑他们的小部件时,小部件有一个&noCache参数,它可以避免缓存内容,并向他们显示小部件的最新版本

令人担忧的是,用户将获取小部件变量(包括noCache)并将其粘贴到某个页面中,从而完全忽略缓存

我正在考虑添加一个组件来检查用户登录,如果登录用户与小部件所有者匹配,那么就不要使用缓存。然而,这意味着每次加载小部件时我都在检查用户会话,而这可能不是我想要做的

关于如何有效地做到这一点,还有其他建议吗


99.9999999%的窗口小部件查看器不会登录,因此我正在尝试为其添加最小的开销

您应该做的是在将值保存到数据库时直接将其设置到memcached中。这样,您就可以让所有请求都通过缓存,而不需要这种解决方法

请参阅memcached常见问题解答中的

更新


这并不意味着您必须将原始变量存储到memcache中。如果要存储呈现的页面,请务必再次呈现该页面并将结果存储到memcache中。如果这“太难”,您可以在更改数据库的同一页中删除memcached中的旧数据,然后等待下一个请求在缓存中找到丢失的数据。

Oh wait!我不能那样做。我正在缓存php页面的结果,正如我在原始问题中提到的,页面的内容会定期更改(基于传递给小部件的变量)。您的解决方案意味着我不是在php页面中设置变量,而是在memcache中设置变量。这仍然会减少数据库负载,但是构建页面的最快方法是将所有内容保存在memcache中,而不仅仅是变量。