CodeIgniter缓存阻止AJAX调用

时间:2015-12-19 01:29:03

标签: php jquery ajax codeigniter caching

我正在使用codeigniter构建我的网站。当用户滚动时,我在一个页面上进行多个ajax调用。我的网站也使用codeigniter进行缓存。我似乎缓存阻止了ajax调用。

它是这样的:
我刷新我的网站并在用户滚动后进行第一次ajax调用。之后应该有几个ajax调用,但它们不执行(不知道为什么)。然后我删除我的缓存,回到网站并滚动。再次只执行第一个ajax调用。

所以我最好的猜测是缓存会以某种方式阻止调用,但我不知道如何绕过这个问题。

我对ajax和codeigniter比较陌生。我用谷歌搜索,但没有任何有用的东西出现。我希望你们能帮助我:)。

2 个答案:

答案 0 :(得分:0)

假设您正在拨打ajax电话:

www.yoursite.com/some_class_to_cache/some_function/some_parameter

问题是路由器负责缓存页面

www.yoursite.com/some_class_to_cache/some_function/cached_pa​​rameter

因此,您收到的响应是此缓存页面而不是ajax响应。 要改变这种行为,一种解决方案是创建一个位于其他未缓存的地方的ajax调用处理程序。

www.yoursite.com/some_ajax_class/some_function/some_parameter

从那里创建 some_class_to_cache 对象,并使用 some_parameter 调用 some_function

答案 1 :(得分:0)

jquery有解决方案但codeigniter会返回404页

$.ajaxSetup({ cache: false });

从我可以看到的问题是jquery使用他们称之为缓存破坏者的东西 _?=xxx获取值,如果我找到了一个可以使用

的URL

应该更容易解决问题

www.yoursite.com/some_class_to_cache/some_function/some_p
    arameter?_=1469969058680

这就是为我解决的问题

将config.php更改为此

$config['uri_protocol'] = "PATH_INFO";