javascript刷新后图像被切断

时间:2015-10-06 00:15:51

标签: javascript image caching browser-cache corruption

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

  1. 用户在网页上进行选择
  2. 网页向服务器发送ajax请求
  3. PHP(laravel)捕获ajax请求并运行shell脚本来更新映像
  4. PHP返回ajax响应并说明图像是否已更新
  5. 如果图片已更新,则javascript会使用以下代码刷新用户的图片:ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) ssl_ctx.load_cert_chain("cert.pem", "key.pem") # If your certs are not self-signed, load your CA certificates here. #ssl_ctx.load_verify_locations("cacerts.pem") ssl_ctx.verify_mode = ssl.CERT_REQUIRED http_server = HTTPServer(application, ssl_options=ssl_ctx)
  6. 问题是图像无法正确加载。以下是加载图像的示例。

    Cut off image

    值得注意的是,显示的图像部分实际上是旧图像的一部分而不是新图像。可能是什么导致了这个?我该如何解决?这可能与我的网站通过流浪汉在VM上运行有关吗?

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

1 个答案:

答案 0 :(得分:0)

这个问题恰好与在Vagrant下运行我的Apache服务器(在virtualbox中)有关。

要解决此问题,我只需将以下行添加到我的apache配置文件(var initialData = angular.copy(data); $scope.data = data; $scope.resetItem = function(index) { $scope.data[index] = angular.copy(initialData[index]); } 或等效文件)中:

/etc/httpd/conf/httpd.conf

请注意,值得搜索配置文件,看看#Disable image serving for network mounted drive EnableSendfile off 是否在其他地方设置为EnableSendfile