缓存插件和AJAX随机数验证

时间:2015-10-09 作者:freaky

我创建了一个插件,它使用一些ajax请求在单击时加载更多帖子。我注意到当我使用缓存插件时W3 Total cache plugin 然后wp_verify_nonce($nonce, $action) 当我没有登录时,有时会失败(因为在登录时缓存被禁用)。

因为这是一个插件,我必须找到一个解决方案来解决这个问题。有没有办法让ajax请求与nonce验证和缓存插件一起工作。使用W3 Total cache插件,即使我在Never cache the following pages 它仍然缓存nonce值。。。但不是页面本身。当缓存插件停用时,一切正常。

我花了几天时间试图找到一个解决方案,但没有成功。即使添加常量,它仍然不起作用(对于fragment也是如此,html不缓存,但nonce缓存):

define(\'DONOTCACHEPAGE\', true);
define(\'DONOTCACHEOBJECT\', true);
define(\'DONOTCACHEDB\', true);
我希望有人能帮我解决这个问题,因为我花了这么多天都没有成功。顺便说一下,nonce是用wp_create_nonce 并像往常一样本地化脚本。而nonce是用wp_verify_nonce.

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

基本上,您不应该对未登录的用户使用nonce,如果必须使用,则不能缓存have页面,否则用户会认为站点有问题。一个折衷的办法是有一分钟左右的短时间缓存,但请好运地向大多数网站所有者解释这一点,这可能会使W3TC无效。

相关推荐

Which cache is kicking

我一直在为一个从另一个开发者那里继承下来的网站而挣扎。我的主要问题是,我在模板的css文件中所做的更改并没有立即得到响应,这表明某种缓存正在发挥作用。我检查的是。这个。任何缓存指令的htaccess文件</任何可能被激活的缓存WordPress插件</主机实现的任何缓存功能</Cloudflare或任何其他CDN</我尝试了不同的浏览器和计算机,所以缓存是服务器端的您可以想象,上面的任何一项都没有启用,但我对css的更改需要几个小时才能看到。我在任何方面都不是WordPress专家