我正在使用 MVC4 开发浏览器游戏,并且今晚第一次能够部署到我的网站。我正在研究从本地主机运行站点和从网站运行站点之间的差异。
现在我要做的第一件事是加载页面上的所有静态内容——导航栏、图标、世界地图,以及一些与之交互的基本 javascript。然后,我调用了四个 AJAX 函数,它们返回关于我的 2d 地图上各种元素的信息,例如城市及其 x、y 坐标、名称和一个小标志图标。
完成 AJAX 函数后,我开始解析返回的 JSON。对于 JSON 中的每个项目,我使用如下代码添加一个新的 20x20 像素类:
function loadSuccessCityTiles(data) {
var cityTiles = jQuery.parseJSON(data);
var cityTileCount = cityTiles.length;
$(".CityTile").remove();
for (var i = 0; i < cityTiles.length; i++) {
var imgName = "../Images/City_Tiles/Small/" + cityTiles[i].Type + "";
$("#scrollWindow").append("<div class = 'CityTile' style = 'left: " + Math.floor(cityTiles[i].X)*tileSize + "px; top: " + Math.floor(cityTiles[i].Y)*tileSize + "px; background-image: url(" + imgName + ");'></div>") ;
}
}
如您所见,我使用它附加了一个新类,它的背景图像设置为适当的图像 url(这就是 Type 的意思)。这在 localhost 上效果很好,但是当我在网站上运行它时,我发现图像没有加载。
我不太确定如何在这里进行。我有很多小的图像元素(每个都在单独的文件中)并且不能保证所有的都会被使用,所以将它们全部加载是浪费的。在这种情况下,什么是好的解决方案?我的一个想法是返回关于将使用哪些图像文件的 JSON 数据,然后在创建将使用它们的类之前通过 javascript 预加载这些图像。
为什么这发生在服务器上而不是本地主机上?在本地主机上重新加载之前清除我的缓存不会重新创建此问题。是不是因为所有文件都已经在您的硬盘上,所以不需要下载?
有没有人有一个更好的方法来一起做这一切的建议?