2015-10-06 27 views
0

我有一个网页这需要一些用户输入,并使用它通过PHP运行shell脚本来更新的图像。然后,该图像将显示给用户,而不刷新它们所在的页面(使用ajax请求)。一般的要点是:图片切断的JavaScript刷新后

  1. 用户对网页上选择
  2. 网页发送Ajax请求到服务器
  3. PHP(laravel)捕获Ajax请求,并运行一个shell脚本来更新图像
  4. PHP返回Ajax响应,并说图像是否被更新或者没有
  5. 如果图像被更新,JavaScript的使用下面的代码刷新图像供用户选择:$("#back_thumbdiv_med").find("> img").attr("src", url + "?" + new Date().getTime());

问题是图像加载不正确。这是一个加载图像的例子。

Cut off image

很有趣的是,这是显示图像的部分实际上是旧的图像不是新形象的一部分。什么可能导致这个?我该如何解决它?这可能与我的网站通过流浪者在虚拟机上运行有关吗?

此外,如果用户导航离开该页面和背部,图像显然会因为它的缓存返回旧版本。我希望图像被缓存,但能够在ajax请求返回后强制刷新。什么

+0

什么,当你在图像在浏览器中直接看(在其中键入的URL发生的。你看这是在服务器上的形象呢?有机会,麻烦的是与你的shell脚本和什么都没有做你的JavaScript – e4c5

+0

如果我浏览到在浏览器中我得到的截止形象,网址,即使我追加一个不同的,随机的查询字符串。纵观直接在服务器然而一个完整的图像可以在没有缺陷可以看到的文件,似乎像某种服务器端缓存的问题,也许它已在内存中缓存副本,它读取,而该文件是由脚本编写的,因此被破坏。 – MattClimbs

+0

但为什么你传递的图像通过一个脚本?为什么不把生成的图像放在一个单独的文件夹中,并将其视为静态项目?这样可以避免这些问题。 – e4c5

回答

0

这个问题正好是与放浪下运行我的Apache服务器(在VirtualBox中)做。

要解决这个问题,我只是有以下行添加到我的Apache的配置文件(/etc/httpd/conf/httpd.conf或同等学历):

#Disable image serving for network mounted drive 
EnableSendfile off 

请注意,这是值得通过配置文件搜索,看是否EnableSendfile设为on其他地方。