Laravel:当我尝试在同一路径上服务ajax和非ajax请求时出现奇怪的行为(缓存)

Chr*_*law 5 laravel laravel-4

我为登记了GET一条路线laravel.dev/test。路由的相应控制器将区分请求是否为ajax。

当我laravel.dev/test在浏览器中键入内容时,Laravel会检测到它不是ajax请求,并用于return View::make()生成页面。然后Backbone.js,页面上的代码向发出ajax请求laravel.dev/test,Laravel使用return Response::json它返回JSON。

一切正常,直到我尝试离开页面,然后使用浏览器按钮导航回去时laravel.dev/test,它会打印出json作为响应,这不是我期望的,因为我没有发出ajax请求。

Ale*_*ult 2

肯定是缓存问题。只是为了尝试获得一些结果,请将其添加到您的控制器(ajax 和非 ajax)以强制禁用缓存:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
Run Code Online (Sandbox Code Playgroud)

并查看 chrome 是否仍然从后退按钮上的缓存中获取。