Cake PHP:由于浏览器缓存而引起的问题,站点在我的本地系统中正常运行,但是当移至远程服务器时却无法运行

贾亚什里·纳拉亚南

我正在开发一个使用Cake php 2.x的网站。我的问题是当调试2站点中的站点正常运行时,如果调试0不能正常运行,我甚至在我的core.php中禁用了应用程序中的缓存

 Configure::write('Cache.disable', true);

例如:我在登录之前看到一些页面-它显示link1,link2 ...,login(link),登录后进入同一页面时,它应该显示link1,link2 ...,myaccount(link),但仍显示登录。仅在刷新页面2或3次后,链接或被更改。但是,如果我转到登录之前未曾访问过的页面,则显示正确。

响应头是

array(11) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Tue, 22 Mar 2016 07:30:43 GMT"
  [2]=>
  string(14) "Server: Apache"
  [3]=>
  string(24) "X-Powered-By: PHP/5.5.33"
  [4]=>
  string(124) "Set-Cookie: CAKEPHP=f86bc010f3cc0cafb417ee8651372aa3; expires=Tue, 22-Mar-2016 11:30:43 GMT; Max-Age=14400; path=/; HttpOnly"
  [5]=>
  string(21) "Content-Length: 18892"
  [6]=>
  string(30) "Cache-Control: max-age=2592000"
  [7]=>
  string(38) "Expires: Thu, 21 Apr 2016 07:30:43 GMT"
  [8]=>
  string(32) "Vary: Accept-Encoding,User-Agent"
  [9]=>
  string(17) "Connection: close"
  [10]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}
维塔利·库里科夫(Vitaly Kulikov)

您提供的响应标头包含以下内容,它们会将您的请求结果缓存30天

Cache-Control: max-age=2592000
Expires: Thu, 21 Apr 2016 07:30:43 GMT

这两个标头在本质上是等效的,您可以单独使用它们中的任何一个,但是请注意,如果同时使用它们,则max-age具有更高的优先级。

如果您的目标是实现缓存和正确的资源重新验证,那么我建议您使用以下标头:

Cache-Control: max-age=0, must-revalidate
ETag: 'some generated value based on the content' 

在这种情况下,浏览器将始终发送请求以检查ETag值,并且如果ETag已更改,则服务器将发送新内容,如果未更改,则服务器将以状态代码:304未修改进行响应

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档